STM32通用定时器外部时钟未触发就产生中断

STM32通用定时器外部时钟未触发计数就产生中断标志位后直接运行中断函数。

你的意思是定时器没使能就开始触发中断了吗?

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7660726
  • 这篇博客你也可以参考下:关于STM32串口烧录后程序正常运行,但是掉电或复位后程序不正常运行的可能解决方法。
  • 除此之外, 这篇博客: STM32定时器与中断整理中的 7、定时器说明 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • STM32F42xxx 系列控制器有2 个高级控制定时器10 个通用定时器2 个基本定时器,还有2 个看门狗定时器

    控制器上所有定时器都是彼此独立的,不共享任何资源。各个定时器特性参考下表:

    注意:其中最大定时器时钟可通过RCC_DCKCFGR 寄存器配置为90MHz 或者180MHz。

    STM32定时器与中断整理

     

     

  • 您还可以看一下 Abel小智老师的嵌入式开发系统学习路线 从基础到项目 精品教程 工程师必备课程 物联网课程中的 单片机STM32项目开发流程介绍小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    解决STM32通用定时器外部时钟未触发就产生中断的问题的方法可能有以下几种:

    1. 检查时钟源配置:首先确保时钟源配置正确,包括选择正确的时钟源和正确的分频因子。根据参考资料中的段落3,可以通过配置TIM_Prescaler和IM_Period来设置PSC分频因子和自动重转载寄存器ARR的值,以确保计时器按照预期的时钟频率进行计数。

    2. 优化中断服务程序:如果中断在外部时钟触发前就被触发了,那么问题可能是中断服务程序执行时间过长。可以通过优化中断服务程序的代码,尽量减少其中的计算量,以提高中断服务程序的响应速度。

    3. 增加延时:可以在中断触发后的中断服务程序中增加一定的延时,以等待外部时钟的触发。延时的具体时间可以通过实验来确定,可以通过使用KEIL的debug工具来测量程序的执行时间。可以参考参考资料中的段落1中的方法来测量代码执行时间。

    4. 使用外部中断:如果使用的是外部时钟源,可以考虑使用外部中断来触发定时器的计数。这样可以确保中断触发时外部时钟已经产生,并且得到了正确的计数。

    根据以上方法中的具体步骤与代码示例,可以结合具体的STM32型号和使用的开发环境进行进一步的调试和解决问题。