打印
[其他ST产品]

STM32 IAP与APP相互跳转出现异常

[复制链接]
1882|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2024-1-26 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我根据原子个的串口IAP程序,改了下程序,但是现在遇到了这样的问题,上电之后IAP运行正常,串口中断可以使用,然后跳转到APP程序,APP程序也正常,串口也可以使用,  然后跳会IAP程序,IAP串口中断不能使用,再跳回APP后,APP的中断也不能用了,这是怎么回事呢?

使用特权

评论回复
沙发
两只袜子| | 2024-1-29 16:39 | 只看该作者
当您在IAP和APP之间切换时,可能会发生中断向量表(Interrupt Vector Table)的更改或损坏。确保在两个程序之间切换时,中断向量表保持不变或正确更新。

使用特权

评论回复
板凳
jcky001| | 2024-1-29 16:39 | 只看该作者
检查IAP和APP程序中的中断配置,确保在程序切换时,中断的配置(如优先级、使能等)没有被错误地修改。

使用特权

评论回复
地板
cr315| | 2024-1-29 16:40 | 只看该作者
在IAP和APP之间切换时避免堆栈溢出或下溢

使用特权

评论回复
5
elephant00| | 2024-1-29 16:40 | 只看该作者
可能是代码问题

使用特权

评论回复
6
primojones| | 2024-2-2 22:02 | 只看该作者
在跳转到IAP程序和APP程序之前,保存当前的串口中断配置。然后,在跳转回IAP程序或APP程序时,恢复之前保存的串口中断配置。这样可以确保串口中断在不同程序之间正确地工作。

使用特权

评论回复
7
usysm| | 2024-2-2 22:21 | 只看该作者
可以考虑使用独立的串口来连接IAP程序和APP程序。这样可以避免串口中断在不同程序之间失效的问题。

使用特权

评论回复
8
sesefadou| | 2024-2-3 11:10 | 只看该作者
频繁地跳转可能导致了堆栈的溢出或破坏,这会影响到中断的处理。

使用特权

评论回复
9
abotomson| | 2024-2-3 21:15 | 只看该作者
在IAP和APP之间可能存在中断向量表的冲突。每个中断服务程序(ISR)在内存中都有特定的位置,当跳转  IAP和APP时,如果中断向量表没有正确更新,可能会导致ISR地址不正确,从而无法正常响应中断。

使用特权

评论回复
10
sdlls| | 2024-2-4 21:04 | 只看该作者
检查是否正确清除了中断标志位,并且对串口的相关寄存器进行了合适的设置和恢复。

使用特权

评论回复
11
eefas| | 2024-2-4 22:12 | 只看该作者
如果IAP程序和APP程序使用相同的串口中断处理函数,那么在跳转时不需要重新配置串口中断。这样可以避免串口中断在不同程序之间失效的问题。

使用特权

评论回复
12
lzmm| | 2024-2-5 12:21 | 只看该作者
硬件故障或配置错误也可能导致中断失效,比如串口模块的线路问题或相关寄存器配置不当。

使用特权

评论回复
13
backlugin| | 2024-2-5 13:15 | 只看该作者
在不同的程序之间跳转可能会导致堆栈混乱,特别是如果两个程序使用不同的堆栈或者堆栈大小。

使用特权

评论回复
14
pl202| | 2024-2-5 15:26 | 只看该作者
在切换过程中,如果全局中断开关被关闭而未重新打开,会导致任何中断都不能响应,包括串口中断。

使用特权

评论回复
15
sdlls| | 2024-2-5 20:04 | 只看该作者
在程序代码中可能存在错误,导致在跳转过程中中断处理函数没有被正确调用或处理。

使用特权

评论回复
16
usysm| | 2024-2-6 15:25 | 只看该作者
在跳转的过程中,如果中断的状态(使能/禁用)发生了变化,那么可能会导致中断服务程序无法正常工作。可以尝试在跳转前后统一中断的状态。

使用特权

评论回复
17
alvpeg| | 2024-2-6 15:57 | 只看该作者
当从IAP跳转到APP或者从APP返回IAP时,需要确保每个程序对应的中断向量表已经正确设置到了CPU的向量地址处。如果在切换过程中没有重新配置中断向量表,那么中断处理函数可能会指向错误的地址,导致中断无法正常响应。

使用特权

评论回复
18
robincotton| | 2024-2-6 19:56 | 只看该作者
IAP和APP在使用串口时,如果没有做好资源管理,可能会出现两者之间的串口控制寄存器状态不一致的问题。例如,IAP程序在跳转前没有恢复串口到初始状态,或APP在运行结束后没有保存并恢复串口状态,这可能导致在切换后另一方无法正常使用串口中断。

使用特权

评论回复
19
louliana| | 2024-2-6 20:39 | 只看该作者
如果使用了地址重映射(如在跳转到APP时改变了内存布局),可能在返回IAP时没有正确地恢复原来的映射状态。

使用特权

评论回复
20
rosemoore| | 2024-2-6 21:15 | 只看该作者
在跳转到APP之前,中断的使能状态(开/关)没有被正确保存和恢复。这可能导致在APP运行时关闭了中断,而返回IAP后没有重新开启。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

373

主题

1976

帖子

3

粉丝