修复定时器
This commit is contained in:
25
user/main.c
25
user/main.c
@@ -30,12 +30,9 @@ void EXTI2_3_IRQHandler(void)
|
|||||||
|
|
||||||
/* 设置事件标志 */
|
/* 设置事件标志 */
|
||||||
high_level_event = 1;
|
high_level_event = 1;
|
||||||
|
gpio_bit_set(GPIOF, GPIO_PIN_7); // 测试用:置高PF7引脚
|
||||||
/* 启动定时器,40ms后清除事件标志 */
|
/* 看门狗式重置:每次中断重置定时器计数,40ms内无新中断才会溢出 */
|
||||||
// timer_disable(TIMER14);
|
|
||||||
timer_counter_value_config(TIMER14, 0);
|
timer_counter_value_config(TIMER14, 0);
|
||||||
|
|
||||||
timer_enable(TIMER14);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +49,9 @@ void TIMER14_IRQHandler(void)
|
|||||||
|
|
||||||
/* 清除事件标志 */
|
/* 清除事件标志 */
|
||||||
high_level_event = 0;
|
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 */
|
/* 配置定时器1 */
|
||||||
void timer14_config(void)
|
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时钟 */
|
/* 使能定时器14时钟 */
|
||||||
rcu_periph_clock_enable(RCU_TIMER14);
|
rcu_periph_clock_enable(RCU_TIMER14);
|
||||||
|
|
||||||
@@ -92,12 +100,11 @@ void timer14_config(void)
|
|||||||
/* 定时器配置 */
|
/* 定时器配置 */
|
||||||
timer_parameter_struct timer_initpara;
|
timer_parameter_struct timer_initpara;
|
||||||
timer_struct_para_init(&timer_initpara);
|
timer_struct_para_init(&timer_initpara);
|
||||||
|
|
||||||
/* 系统时钟为48MHz,预分频48,计数到40000,产生40ms中断 */
|
timer_initpara.prescaler = 719; // 72MHz / 720 = 100kHz
|
||||||
timer_initpara.prescaler = 71999; // 72MHz / 72000 = 1kHz
|
|
||||||
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
|
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
|
||||||
timer_initpara.counterdirection = TIMER_COUNTER_UP;
|
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.clockdivision = TIMER_CKDIV_DIV1;
|
||||||
timer_initpara.repetitioncounter = 0;
|
timer_initpara.repetitioncounter = 0;
|
||||||
timer_init(TIMER14, &timer_initpara);
|
timer_init(TIMER14, &timer_initpara);
|
||||||
|
|||||||
Reference in New Issue
Block a user