[APM32F4] APM32F407IGT6定时器2处理的问题

[复制链接]
 楼主| uuuuu1998 发表于 2025-6-12 16:10 | 显示全部楼层 |阅读模式
本帖最后由 uuuuu1998 于 2025-6-12 16:14 编辑

75393684a8be6dce08.png
如图所示,是定时器2初始化的内容,发现在keil仿真时,函数跑到这个函数NVIC_EnableIRQRequest(TMR2_IRQn, 0, 0);之后就无法正常跑下去,工程也就只有GPIO初始化和这个定时器初始化的内容,如果把上面定时器2的中断使能函数屏蔽掉,可以正常跑下去,就是不能实现定时器去计数的功能,在仿真跑的过程中定时器2里面的CNT数据没有变化
心跳回响 发表于 2025-6-12 19:55 | 显示全部楼层
楼主,会不会是中断函数您没有实现。
一进入中断后,直接跑飞了。
dffzh 发表于 2025-6-13 09:36 | 显示全部楼层
本帖最后由 dffzh 于 2025-6-13 09:46 编辑

1、程序无法正常跑下去的时候,点击停止运行按钮,看此时程序代码运行在哪里。 28472684b809e6f76d.png
2、NVIC_EnableIRQRequest函数基本上都是普通代码,没有什么循环,理论上应该不会卡死;
你可以单步仿真执行,看NVIC_EnableIRQRequest里面的代码运行到哪里时卡死。
25708684b81628f7b4.png
3、在apm32f4xx_int.c文件里写下下面的代码:
void TMR2_IRQHandler(void)
{
    // 清除中断标志
    TMR_ClearIntFlag(TMR2, TMR_INT_UPDATE);
    // 用户代码
}


海洋凝视 发表于 2025-6-13 11:19 | 显示全部楼层
我上次是写了错误中断函数,也就是把正确的中断函数留空了。
这样导致中断触发后,没有清除中断标志位,系统一直在中断函数里面,看上去像是系统跑飞了。
供楼主参考
LightCatcher 发表于 2025-6-13 21:16 | 显示全部楼层
看下中断标志位有没有清除,不然一直进中断,打个断点看下即可
EchoInEons 发表于 2025-6-14 14:39 | 显示全部楼层
中断异常,看下中断标志位的状态即可。
黎明热忱 发表于 2025-6-14 17:27 | 显示全部楼层
在跑飞的时候看看PC指针是否正常。
再查看一个Timer的状态位。
硬件外设本身不会有问题的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部