本帖最后由 muyichuan2012 于 2024-5-11 17:36 编辑
AT32 WorkBench常用功能5--定时器溢出中断配置
定时器溢出中断 本文主要介绍如何基于AT32 WorkBench配置定时器溢出中断 硬件环境 l AT-START-F423 l 逻辑分析仪
软件环境 l AT32 Workbench l MDK5 l DSView
配置步骤 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 the actual application. * 1. Call the below function to enable the corresponding TMR2 interrupt. * --tmr_interrupt_enable(...) * 2. Add the user's interrupt handler code into the below function in the at32f423_int.c file. * --void TMR2_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,如下图
|