打印
[开发工具]

STM32串口+DMA发送数据程序卡死

[复制链接]
793|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
过期的塔头|  楼主 | 2022-1-26 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件平台:STM32F411RET6
软件环境:IAR IDE for arm 8.30.1
问题现象:在使用串口+DMA发送数据时,调用发数函数之后,程序卡死,程序跑飞到0x8004e30。
问题解决:
1、定位到只要启动DMA程序就出现异常
2、因为icf文件设置的程序起始flash地址为0x8008000,但跑飞地址为0x8004e30
3、正常情况跑飞地址范围也是从0x8008000开始,查看map文件发现.s向量表地址是从0x8008000开始
4、其实正真的向量表是由软件配置寄存器SCB->VTOR配置的
5、查看该寄存器值还是默认值0x8000000
6、将该值改成0x8008000后,软件运行正常

使用特权

评论回复
沙发
foxsbig| | 2022-1-27 10:19 | 只看该作者
这个,单靠描述有点难,
最好对比例程看看配置问题
ST的例程还是很多的

使用特权

评论回复
板凳
g0d5xs| | 2022-2-12 12:21 | 只看该作者
这个倒是没遇到过,不过IAR调试是真的舒服啊

使用特权

评论回复
地板
p0gon9y| | 2022-2-12 12:29 | 只看该作者
一般情况下也不需要修改中断向量表啊

使用特权

评论回复
5
ex7s4| | 2022-2-12 12:39 | 只看该作者
感谢楼主巧妙分享吧,这个属实还遇到过,不过这也算是一个经验了

使用特权

评论回复
6
q1d0mnx| | 2022-2-12 12:52 | 只看该作者
正常也不需要修改中断向量表的,IAR调试我还没用过,都是keil的,没遇到过这个问题

使用特权

评论回复
7
zhizia4f| | 2022-2-12 13:16 | 只看该作者
这个是不是跟IAR的使用有关系呢?

使用特权

评论回复
8
pixhw| | 2022-2-22 18:17 | 只看该作者
是软件跑飞了?

使用特权

评论回复
9
kiwis66| | 2022-2-23 14:04 | 只看该作者
好像是两回事,是不是做过boot升级

使用特权

评论回复
10
pentruman| | 2022-2-23 15:20 | 只看该作者
有可能是程序执行的有问题了。   

使用特权

评论回复
11
averyleigh| | 2022-2-23 15:56 | 只看该作者
参考一下例程吧https://blog.csdn.net/zfchen819/article/details/78635131

使用特权

评论回复
12
i1mcu| | 2022-2-23 16:36 | 只看该作者
是不是超出了设置的范围呢   

使用特权

评论回复
13
yujielun| | 2022-2-23 17:21 | 只看该作者
STM32串口+DMA应该问题不是很大。   

使用特权

评论回复
14
1988020566| | 2022-2-23 17:57 | 只看该作者
你做一个断点,看看程序会运行到哪里呢

使用特权

评论回复
15
kkzz| | 2022-2-23 18:26 | 只看该作者
是不是开启了中断了  

使用特权

评论回复
16
mmbs| | 2022-2-23 18:55 | 只看该作者
把你的代码斩题过来看一下  

使用特权

评论回复
17
lihuami| | 2022-2-23 19:30 | 只看该作者
为什么不使用串口中断呢   

使用特权

评论回复
18
claretttt| | 2022-2-23 20:00 | 只看该作者
DMA发送数据有什么问题   

使用特权

评论回复
19
香水城| | 2022-2-24 13:34 | 只看该作者
你如果开启了中断,比方DMA传输中断 同时VTOR配置又不对的话,肯定会出错。

你既然程序在8008000开始的地方,那么VTOR也得同步改过来。

使用特权

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

本版积分规则

80

主题

946

帖子

0

粉丝