[开发工具] STM32串口+DMA发送数据程序卡死

[复制链接]
 楼主| 过期的塔头 发表于 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 | 显示全部楼层
一般情况下也不需要修改中断向量表啊
ex7s4 发表于 2022-2-12 12:39 | 显示全部楼层
感谢楼主巧妙分享吧,这个属实还遇到过,不过这也算是一个经验了
q1d0mnx 发表于 2022-2-12 12:52 | 显示全部楼层
正常也不需要修改中断向量表的,IAR调试我还没用过,都是keil的,没遇到过这个问题
zhizia4f 发表于 2022-2-12 13:16 | 显示全部楼层
这个是不是跟IAR的使用有关系呢?
pixhw 发表于 2022-2-22 18:17 | 显示全部楼层
是软件跑飞了?
kiwis66 发表于 2022-2-23 14:04 | 显示全部楼层
好像是两回事,是不是做过boot升级
pentruman 发表于 2022-2-23 15:20 | 显示全部楼层
有可能是程序执行的有问题了。   
averyleigh 发表于 2022-2-23 15:56 | 显示全部楼层
参考一下例程吧https://blog.csdn.net/zfchen819/article/details/78635131
i1mcu 发表于 2022-2-23 16:36 | 显示全部楼层
是不是超出了设置的范围呢   
yujielun 发表于 2022-2-23 17:21 | 显示全部楼层
STM32串口+DMA应该问题不是很大。   
1988020566 发表于 2022-2-23 17:57 | 显示全部楼层
你做一个断点,看看程序会运行到哪里呢
kkzz 发表于 2022-2-23 18:26 | 显示全部楼层
是不是开启了中断了  
mmbs 发表于 2022-2-23 18:55 | 显示全部楼层
把你的代码斩题过来看一下  
lihuami 发表于 2022-2-23 19:30 | 显示全部楼层
为什么不使用串口中断呢   
claretttt 发表于 2022-2-23 20:00 | 显示全部楼层
DMA发送数据有什么问题   
香水城 发表于 2022-2-24 13:34 | 显示全部楼层
你如果开启了中断,比方DMA传输中断 同时VTOR配置又不对的话,肯定会出错。

你既然程序在8008000开始的地方,那么VTOR也得同步改过来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

999

帖子

0

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