muyichuan2012 发表于 2024-5-11 11:37

AT32 WorkBench常用功能5--定时器溢出中断配置

本帖最后由 muyichuan2012 于 2024-5-11 17:36 编辑

AT32 WorkBench常用功能5--定时器溢出中断配置
定时器溢出中断本文主要介绍如何基于AT32 WorkBench配置定时器溢出中断硬件环境lAT-START-F423l逻辑分析仪
软件环境lAT32 WorkbenchlMDK5lDSView

配置步骤1 打开AT32 WorkBench新建AT32F423工程
2 配置系统时钟(如果使用默认内部HICK倍频到150MHz,客户跳过此步骤2)
2.1 打开外设CRM配置HEXT为时钟振荡器,如下图
2.2 打开时钟配置
3 配置定时器周期为1k Hz
4 开启定时器溢出中断,在WorkBench上勾选TMR2_GLOBAL_IRQ如下图
5 配置PA1为push output,用于观察定时器溢出
6 点击“生成代码”生成MDK5代码工程
7 配置定时器溢出中断相关应用代码7.1 开启定时器溢出中断
at32f423_wk_config.c的wk_tmr2_init函数中键入如下加粗字体部分
void wk_tmr2_init(void){ ...
…tmr_primary_mode_select(TMR2,TMR_PRIMARY_SEL_RESET);
   tmr_counter_enable(TMR2, TRUE);
   /**    * Users need to configure TMR2 interrupt functions according to theactual application.    * 1. Call the below function to enable the corresponding TMR2interrupt.    *      --tmr_interrupt_enable(...)    * 2. Add the user's interrupt handler code into the below function inthe at32f423_int.c file.    *   --voidTMR2_GLOBAL_IRQHandler(void)    */
   /* add user code begin tmr2_init 2 */       tmr_interrupt_enable(TMR2,TMR_OVF_INT,TRUE);   /* add user code end tmr2_init 2 */}

7.2 在定时器溢出中断中添加GPIO toggle代码
在at32f423_int.c文件中完成void TMR2_GLOBAL_IRQHandler(void)函数如下
void TMR2_GLOBAL_IRQHandler(void){   /* add user code begin TMR2_GLOBAL_IRQ 0 */   if(tmr_flag_get(TMR2,TMR_OVF_FLAG) == SET)      {               gpio_bits_toggle(GPIOA,GPIO_PINS_1);               tmr_flag_clear(TMR2,TMR_OVF_FLAG);      }   /* add user code end TMR2_GLOBAL_IRQ 0 */   /* add user code begin TMR2_GLOBAL_IRQ 1 */
   /* add user code end TMR2_GLOBAL_IRQ 1 */}

8 在MDK5上编译,并下载代码到AT32F423 MCU 上9 复位运行AT32F423 MCU,用逻辑分析仪观察PA1上翻转频率,波形如下图注意:因为是每1 ms PA1翻转一次,所以下降沿到下降沿的周期就应该为2ms,如下图










页: [1]
查看完整版本: AT32 WorkBench常用功能5--定时器溢出中断配置