我有一个大问题.我不知道如何用按钮停止计时器并用另一个按钮重新启动计时器.
这是我到目前为止的代码:
此代码是启动计时器的按钮的中断处理程序.我认为通过启用到目前为止工作的计时器是可能的.
void EXTI0_1_IRQHandler(void)
{
if ((EXTI->PR & EXTI_PR_PR1) == EXTI_PR_PR1) /* Check line 1 has triggered the IT */
{
EXTI->PR = EXTI_PR_PR1; /* Clear the pending bit */
NVIC_EnableIRQ(TIM7_IRQn);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码是停止计时器的按钮的中断处理程序.这段代码不起作用,计时器保持打开状态.
void EXTI4_15_IRQHandler(void)
{
if ((EXTI->PR & EXTI_PR_PR4) == EXTI_PR_PR4) /* Check line 1 has triggered the IT */
{
EXTI->PR = EXTI_PR_PR4; /* Clear the pending bit */
NVIC_DisableIRQ(TIM7_IRQn);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人有一些提示或知道它必须如何?
小智 9
我认为"NVIC_DisableIRQ(TIM7_IRQn);"只是禁用定时器的中断但不停止定时器.您可能需要:"TIM_Cmd(TIM7,DISABLE);" 而不是"NVIC_DisableIRQ(TIM7_IRQn);"
使用[HAL][1],启动:
HAL_TIM_Base_Start(&htim);
HAL_TIM_Base_Start_IT(&htim);
Run Code Online (Sandbox Code Playgroud)
停止:
HAL_TIM_Base_Stop(&htim);
HAL_TIM_Base_Stop_IT(&htim);
Run Code Online (Sandbox Code Playgroud)
其中_IT为定时器中断模式。并且您可以在停止计时器后重新配置计时器。[1]:http ://www.disca.upv.es/aperles/arm_cortex_m3/llibre/st/STM32F439xx_User_Manual/stm32f4xx__hal__tim_8c.html
| 归档时间: |
|
| 查看次数: |
12545 次 |
| 最近记录: |