[活动专区] 【AT-START-F425测评】AT32F425定时器点灯

[复制链接]
753|0
 楼主| 51xlf 发表于 2022-3-5 22:41 | 显示全部楼层 |阅读模式
AD, ar, AI, TI
这里利用定时器产生内部的时钟信号,不再使用延时的函数代码。用计数器判断时间差值,在main函数中做相应的操作。arduino里面常用的就是这种方法。

程序中的systick已经用作内部延时函数的代码了,所以这里使用定时器1作为内部计数器。
官网的例程给出一个定时器1产生1s周期的代码。这就修改一下定时器就行了
在at32f425_board.c定义一个初始化定时器1的代码,系统给出的是120Mhz的主频,用串口输出这个数据是96Mhz的,所以
这需要修改一下。
  1. crm_clocks_freq_type crm_clocks_freq_struct = {0};
  2. void at32_time1_init()
  3. {
  4.           /* get system clock */
  5.   crm_clocks_freq_get(&crm_clocks_freq_struct);
  6.         printf("crm_clocks_freq is %d \rn",crm_clocks_freq_struct.ahb_freq);
  7.        
  8.        
  9.           /* enable tmr1 clock */
  10.   crm_periph_clock_enable(CRM_TMR1_PERIPH_CLOCK, TRUE);
  11.          /* tmr1 configuration */
  12.   /* time base configuration */
  13.   /* systemclock/96/1000 = 1khz */
  14.   tmr_base_init(TMR1, 1000-1, (crm_clocks_freq_struct.ahb_freq / 1000000) - 1);
  15.   tmr_cnt_dir_set(TMR1, TMR_COUNT_UP);
  16.   /* overflow interrupt enable */
  17.   tmr_interrupt_enable(TMR1, TMR_OVF_INT, TRUE);
  18.   /* tmr1 overflow interrupt nvic init */
  19.   nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  20.   nvic_irq_enable(TMR1_BRK_OVF_TRG_HALL_IRQn, 0, 0);

  21.   /* enable tmr1 */
  22.   tmr_counter_enable(TMR1, TRUE);
  23. }
在main.c中定义一个计数的变量
  1. uint32_t sys_cnt=0;// 系统内部计时变量

  2. uint32_t now(void)
  3. {
  4.         return sys_cnt;       
  5. }
还需要在定时器中断中驱动这个变量自增加

  1. void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)
  2. {
  3.   if(tmr_flag_get(TMR1, TMR_OVF_FLAG) != RESET)
  4.   {
  5.     /* add user code... */
  6.     sys_cnt++;
  7.     tmr_flag_clear(TMR1, TMR_OVF_FLAG);
  8.   }
  9. }
剩下的就是在代码中实现led显示了
  1.   if(now()-lst_t>1000)//每一秒钟执行一次
  2.                 {
  3.                         lst_t=now();
  4.                         at32_led_toggle(LED2);
  5.                         at32_led_toggle(LED3);
  6.                         at32_led_toggle(LED4);
  7.                 }
上电下载程序就能看到代码了,这里就不再上图演示了。
附上代码
AT32F425.rar (3.12 MB, 下载次数: 8)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

551

主题

9975

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部