硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1414|回复: 10
收起左侧

[技术讨论] stm32f103c8t6的IAP跳转APP成功后串口3失效问题求助

[复制链接]

4

主题

6

回帖

18

积分

新手上路

积分
18
发表于 2024-11-29 14:23:19 | 显示全部楼层 |阅读模式
使用stm32f103c8t6,BOOT大概6k,设置APP程序偏移8K,可以正常跳转到app程序(呼吸灯正常,串口1的MODBUS通讯也正常),但是串口3接收中断不正常,仿真能看到DR寄存器里收到数据,但是RXNE寄存器没有置1,数据都处理不了。然后把app程序偏移取消,直接从0800 0000编译,串口3就没任何问题,这种情况大佬们遇到过吗?
回复

使用道具 举报

24

主题

365

回帖

437

积分

高级会员

积分
437
发表于 2024-11-29 15:03:06 | 显示全部楼层
中断向量表偏移修改了吗
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-11-29 15:05:01 | 显示全部楼层
tovinz 发表于 2024-11-29 15:03
中断向量表偏移修改了吗

修改了,直接在.s里的那个SystemInit函数最后一行那改的
回复

使用道具 举报

24

主题

365

回帖

437

积分

高级会员

积分
437
发表于 2024-11-29 15:41:33 | 显示全部楼层
lxygwcf 发表于 2024-11-29 15:05
修改了,直接在.s里的那个SystemInit函数最后一行那改的

跳转前清理干净没有。

实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时制作了一个视频操作说明
https://forum.anfulai.cn/forum.p ... 5&fromuid=41790
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-11-29 15:52:50 | 显示全部楼层
tovinz 发表于 2024-11-29 15:41
跳转前清理干净没有。

实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时 ...

清理干净了,跳转后APP里的程序大多都能运行,只有串口3这个不行
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-11-29 22:17:34 | 显示全部楼层
跳转之前全局中断关了吗
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-11-30 14:23:11 | 显示全部楼层
wangjianpeng 发表于 2024-11-29 22:17
跳转之前全局中断关了吗

先关全局中断,然后把所有中断关闭,跳转前开全局中断,最后跳转,APP里的程序都正常运行的,只有串口3出现这种半死不活的情况,还有在移植freemodbus的时候,也会出现这种接收中断使能开了,DR寄存器收到了数据,但是接收中断不触发的情况
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-11-30 21:00:54 | 显示全部楼层
lxygwcf 发表于 2024-11-30 14:23
先关全局中断,然后把所有中断关闭,跳转前开全局中断,最后跳转,APP里的程序都正常运行的,只有串口3出 ...

中断使能了吗,SR寄存器那儿有反应吗
回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-12-3 18:55:03 | 显示全部楼层
找到问题了,在boot跳转后初始化串口3前先将串口3相关的时钟Dinit一下,就解决了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-4 09:50:53 | 显示全部楼层
lxygwcf 发表于 2024-12-3 18:55
找到问题了,在boot跳转后初始化串口3前先将串口3相关的时钟Dinit一下,就解决了

谢谢告知最终原因。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-7-31 13:34:39 | 显示全部楼层
我也遇到过,上边的方法我都试了,没用。最后发现是DMA接受不定长数据,IAP跳转以后发送的数据仍然被DMA转运到IAP程序指定的地址,所以收不到数据。解决办法是跳转前吧UART初始化再把DMA关掉,然后初始化
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-11 20:55 , Processed in 0.048999 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表