STM32无法进入中断问题,附上程序,在网盘里,下面是链接

初学STM32,遇到关于中断问题,跟视频学习,代码仔细检查过,没找出问题,硬件没问题,下载附件中中文目录下的例程可正常计数下载自己的代码却不能计数。

网盘附件,两个程序,效果不一样
[](链接:https://pan.baidu.com/s/1vcpmox67y9vEx-zpMS59vA?pwd=st32
提取码:st32)

引用 皆我百晓生 小程序回复内容作答:
遇到关于中断问题可以按照以下步骤进行排查:

  1. 确认中断优先级设置正确:在STM32中,中断的优先级由高到低排列,如果遇到多个中断同时发生,优先级高的中断会先被处理。确保你的中断优先级设置正确。

  2. 确认中断向量表正确配置:中断向量表是一个存放中断服务函数地址的表,确保你的中断服务函数正确地放在相应的位置上。

  3. 检查中断使能设置:确认中断使能位(如NVIC中的相应中断使能位)已经正确配置。

  4. 查看中断服务函数:检查中断服务函数的实现是否正确。可能需要根据你的具体需求进行相应的操作。

  5. 检查外设配置:一些中断需要先进行相应的外设配置,确保外设已经正确配置。

  6. 确认硬件连接正确:确认硬件连接,包括中断引脚的连接是否正确。

如果你的代码与视频附件中的例程类似,但是却不能计数,那么有可能存在以下问题:

  1. 时钟配置:确保你的时钟配置正确,特别是外部时钟源的配置。

  2. 中断标志位清除:确认在中断服务函数中是否清除了相应的中断标志位,否则中断将持续触发。

  3. 中断服务函数的命名:确认你的中断服务函数的命名是否正确,特别是与硬件中断源的命名对应。

如果仍然无法解决问题,可以提供你的代码以便更详细地排查。

初始化完成后断点一下,看看配置的寄存器等和目标值是否一致

CountSensor_Count是一个在中断里改变的全局变量,最好在声明的前面加个volatile

volatile uint16_t CountSensor_Count;

自定义代码中的时钟配置与示例代码中的配置一致。中断计数器通常与时钟频率相关,如果时钟配置不正确,可能导致中断计数不准确。

能不能按照他的版本下载你的环境?

中断优先级:确保你的中断优先级是正确的。STM32有高、中、低三种优先级,你需要确保你的中断优先级高于任何可能中断它的中断。
中断向量表:检查中断向量表是否正确配置。在STM32中,每个中断都有一个与之关联的向量表条目。你需要确保你的中断号和向量表中的条目匹配。
中断函数:确保你的中断函数被正确地声明和实现,且没有语法错误。中断函数通常需要特定的格式,包括一个返回类型(void),以及一个参数列表(通常是void)。
中断使能:检查是否已经正确地使能了中断。在STM32中,你需要设置NVIC(Nested Vectored Interrupt Controller)的相应位来使能中断。
中断触发方式:检查中断的触发方式是否正确。例如,上升沿触发、下降沿触发等。
全局中断标志位:检查全局中断标志位是否已经被清除。当一个中断被触发时,一个对应的全局中断标志位会被设置。在退出中断函数时,需要手动清除这个标志位,否则下一次中断不会触发。