diff --git a/user/main.c b/user/main.c index e884df4..9a09343 100644 --- a/user/main.c +++ b/user/main.c @@ -30,12 +30,9 @@ void EXTI2_3_IRQHandler(void) /* 设置事件标志 */ high_level_event = 1; - - /* 启动定时器,40ms后清除事件标志 */ - // timer_disable(TIMER14); + gpio_bit_set(GPIOF, GPIO_PIN_7); // 测试用:置高PF7引脚 + /* 看门狗式重置:每次中断重置定时器计数,40ms内无新中断才会溢出 */ timer_counter_value_config(TIMER14, 0); - - timer_enable(TIMER14); } } @@ -52,6 +49,9 @@ void TIMER14_IRQHandler(void) /* 清除事件标志 */ high_level_event = 0; + gpio_bit_reset(GPIOF, GPIO_PIN_7); // 测试用:置低PF7引脚 + /* 测试用:翻转PF7引脚,用于验证定时器周期 */ + // gpio_bit_toggle(GPIOF, GPIO_PIN_7); } } @@ -83,6 +83,14 @@ void exti_pa3_config(void) /* 配置定时器1 */ void timer14_config(void) { + /* 使能GPIOF时钟 */ + rcu_periph_clock_enable(RCU_GPIOF); + + /* 配置PF7为推挽输出,用于测试定时器周期 */ + gpio_mode_set(GPIOF, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7); + gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7); + gpio_bit_reset(GPIOF, GPIO_PIN_7); // 初始化为低电平 + /* 使能定时器14时钟 */ rcu_periph_clock_enable(RCU_TIMER14); @@ -92,12 +100,11 @@ void timer14_config(void) /* 定时器配置 */ timer_parameter_struct timer_initpara; timer_struct_para_init(&timer_initpara); - - /* 系统时钟为48MHz,预分频48,计数到40000,产生40ms中断 */ - timer_initpara.prescaler = 71999; // 72MHz / 72000 = 1kHz + + timer_initpara.prescaler = 719; // 72MHz / 720 = 100kHz timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; - timer_initpara.period = 199; // 40ms (0~39) + timer_initpara.period = 3999; // 40ms @ 100kHz timer_initpara.clockdivision = TIMER_CKDIV_DIV1; timer_initpara.repetitioncounter = 0; timer_init(TIMER14, &timer_initpara);