按键控制数码管秒表停止程序

按键控制数码管秒表停止程序,第1张

要实现按键控制数码管秒表停止程序,需要涉及到按键检测、定时器中断、数码管显示等多个方面。其中,按键检测需要通过输入捕获功能实现;定时器中断可选择采用中断计数器、定时器比较匹配或者定时器溢出方式实现;数码管显示需要涉及到数据转换、位选、位平衡及后置驱动等方面。当用户按下停止按钮时,需要将计数器停止并将当前计时数码纪录下来,以便下次继续计时。同时,还需要注意防止按键抖动和误触发,增加程序的可靠性和稳定性。 在具体实现过程中,还需要关注低功耗优化、实时性、代码可维护性、易扩展性等方面。通过逐步完善和测试,可实现一个可靠稳定的按键控制数码管秒表停止程序。同时,开发者还可以结合其他功能,如数据存储、多任务切换等,实现更为复杂的实用应用。

我有一个大问题。我不知道如何用按钮停止计时器并用另一个按钮重新启动计时器。

这是我到目前为止的代码:

此代码是启动计时器的按钮的中断处理程序。我认为通过启用定时器是可能的,到目前为止它是有效的。

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)

}

}

此代码是停止计时器的按钮的中断处理程序。这段代码不起作用,计时器一直亮着。

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)

}

}

有没有人有一些提示或知道它必须是怎样的?

最佳答案

我认为“NVIC_DisableIRQ(TIM7_IRQn)”只需禁用计时器的中断但不停止计时器。

您可能需要:“TIM_Cmd(TIM7, DISABLE)”而不是“NVIC_DisableIRQ(TIM7_IRQn)”


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11356568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存