AT32定时器IC解密
| IC解密定时器中断 定时器溢出中断是定时器最基础功能,进入中断的时间周期可由相关寄存器配置。 1、 定时器计数器值 TMRx_CVAL 2、 定时器预分频寄存器 TMRx_DIV 3、定时器周期寄存器(TMRx_PR) IC解密配置流程 1 编写定时器溢出中断函数的应用程序 2 开启定时器外设时钟 3 配置定时器 TMRx_DIV 寄存器和 TMRx_PR 寄存器 4 配置定时器为向上计数方向 5 开启定时器溢出中断 6 开启 NVIC 溢出中断 7 开启定时器计数 int main(void) { /* 系统时钟配置 */ system_clock_config(); /* LED 延时函数等初始化 */ at32_board_init(); /* 获取系统时钟 */ crm_clocks_freq_get(&crm_clocks_freq_struct); /* 点亮 LED2/LED3/LED4 */ at32_led_on(LED2); at32_led_on(LED3); at32_led_on(LED4); /* 开启 TMR1 时钟 */ crm_periph_clock_enable(CRM_TMR1_PERIPH_CLOCK, TRUE); /* 配置定时器 TMRx_DIV 寄存器和 TMRx_PR 寄存器 */ /* systemclock/24000/10000 = 1hz */ tmr_base_init(TMR1, 9999, (crm_clocks_freq_struct.ahb_freq / 10000) - 1); /*配置定时器为向上计数方向,如果选择向上计数也可以不配置该语句, 因为 TMR 默认就是向上计数模式 */ tmr_cnt_dir_set(TMR1, TMR_COUNT_UP); /* 开启定时器溢出中断 */ tmr_interrupt_enable(TMR1, TMR_OVF_INT, TRUE); /* 开启 NVIC 溢出中断 */ nvic_priority_group_config(NVIC_PRIORITY_GROUP_4); nvic_irq_enable(TMR1_OVF_TMR10_IRQn, 0, 0); /* 开启定时器计数 */ tmr_counter_enable(TMR1, TRUE); clkout_config(); while(1) { } } |

芯片解密