查看: 643|回复: 1

【瑞萨RA4系列开发板体验】定时器(r_agt)使用经验

[复制链接]

116

主题

134

帖子

3778

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3778
发表于 2023-1-5 15:21:04 | 显示全部楼层 |阅读模式

作者:少年阿炳


前言
本次分享是使用瑞萨的RASC自动生成定时器的基础配置,在尝试使用定时器时,试了N遍都不得其法,最终求助后完成了定时器的配置。感谢。
本文只分享定时器相关的内容,新手需要有一点点的基础,至少会点灯了。



配置定时器注意事项

1.PCLKB时钟频率较高,秒中断需要切换其他低速时钟,本次我选择的是LOCO。
2.RASC里配置是直接配置中断间隔时间,和stm32需要计算的方式不一样。



配置过程
选择 New Stack-->timers-->Timer,Low-Power(r_agt)

点击新生成的Stack,
分别在General和Interrupt中配置参数和回调函数。


时钟选择:LOCO
Period Unit:选择 milliseconds(毫秒)
Period:输入500
上面的意思是让定时器没500ms产生一次中断。
在Interrupt中定义回调函数,函数名可自定义。
设置中断优先级Priority 3
同时我配置了LED1。
到这里就配置完毕。点击生成工程。

代码部分
  1. #include "hal_data.h"

  2. FSP_CPP_HEADER
  3. void R_BSP_WarmStart(bsp_warm_start_event_t event);
  4. FSP_CPP_FOOTER

  5. volatile uint32_t time0_500ms = 0;

  6. void g_timer0_callback(timer_callback_args_t *p_args)
  7. {
  8.     /* TODO: add your own code here */
  9.     if (TIMER_EVENT_CYCLE_END == p_args->event)
  10.     {
  11.         time0_500ms ++;
  12.     }
  13. }

  14. /*******************************************************************************************************************//**
  15. * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
  16. * is called by main() when no RTOS is used.
  17. **********************************************************************************************************************/
  18. void hal_entry(void)
  19. {
  20.     /* TODO: add your own code here */
  21.     fsp_err_t err;
  22.     /* TODO: add your own code here */
  23.     err = R_AGT_Open(&g_timer0_ctrl, &g_timer0_cfg);
  24.     assert(FSP_SUCCESS == err);
  25.     err = R_AGT_Start (&g_timer0_ctrl);
  26.     while(1)
  27.     {
  28.         if(time0_500ms >= 2)
  29.         {            
  30.             time0_500ms = 0;
  31.             R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_15 & 0xFF);
  32.         }

  33.     }
  34. #if BSP_TZ_SECURE_BUILD
  35.     /* Enter non-secure code */
  36.     R_BSP_NonSecureEnter();
  37. #endif
  38. }
复制代码
实验现象
LED1按照一秒每次的频率闪烁。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

3

主题

195

帖子

1540

积分

金牌会员

Rank: 6Rank: 6

积分
1540
发表于 2023-3-14 11:25:09 | 显示全部楼层

不错,学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:134精华:0

RA_Lance

主题: 92帖子:132精华:9

lugl

主题: 45帖子:134精华:0

xujiwei263

主题: 16帖子:73精华:0

books咦

主题: 11帖子:11精华:2

Juggernaut

主题: 9帖子:95精华:0
快速回复 返回顶部 返回列表