OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3707|回复: 9

改为RAM运行程序后,无法串口中断

[复制链接]

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-9-8
在线时间
39 小时
发表于 2016-9-8 21:08:13 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 louiskingking 于 2016-9-8 21:12 编辑

因为程序每次都是烧写在内部Flash中去运行,担心过多的擦写会影响flash寿命,因此把程序运行方式改为从RAM地址(0x20000000)开始运行;只需要该编译环境即可,源代码不需任何改变。前面跑马灯、按键两个实验都非常顺利,RAM中运行完全ok。可是到第三个实验"串口通信"时,编译成功,可是板子发送 "请输入数据,以回车键结束" ,串口软件可以接收到,但是板子却无法接受从串口发出来的字符。如果改为把程序下载到flash中去,运行完全正常,源代码没做任何修改,请问这是怎么回事?在ram中运行程序,怎么就不能串口接收终端了呢?

QQ图片20160908211132.png

最佳答案

查看完整内容[请看2#楼]

终于ok了,修改"system_stm32f4xx.c"的第105行,打开注释 #define VECT_TAB_RAM,这样中断向量就从sram的0x20000000开始了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-9-8
在线时间
39 小时
 楼主| 发表于 2016-9-8 21:08:14 | 显示全部楼层
终于ok了,修改"system_stm32f4xx.c"的第105行,打开注释 #define VECT_TAB_RAM,这样中断向量就从sram的0x20000000开始了!
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-9-8 21:40:16 | 显示全部楼层

用到中断了?


回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-9-8
在线时间
39 小时
 楼主| 发表于 2016-9-8 22:51:55 | 显示全部楼层
查了半天,说是要改中断向量位置  NVIC_SetVectorTable(NVIC_VectTab_RAM,0);可是我在工程里收不到这个文件啊。。。。。
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-9-8 23:49:22 | 显示全部楼层

要重新定位这个中断向量。


回复

使用道具 举报

3

主题

144

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7342
金钱
7342
注册时间
2016-2-6
在线时间
1863 小时
发表于 2016-9-9 00:33:42 | 显示全部楼层
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-9-8
在线时间
39 小时
 楼主| 发表于 2016-9-9 07:52:52 | 显示全部楼层
xuande 发表于 2016-9-8 23:49
要重新定位这个中断向量。

我也知道要重新定位这个向量,但不知道入口在哪里?我用的是官方“STM32Cube_FW_F4_V1.11.0”库
回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-9-8
在线时间
39 小时
 楼主| 发表于 2016-9-9 07:54:20 | 显示全部楼层
pbxywyq 发表于 2016-9-9 00:33
http://blog.csdn.net/liuu67xin/article/details/17800311

这个设置RAM运行我已经会了,但是没有介绍如何重新定义中断向量。这样的设置运行无中断的程序没问题,有中断的就不行了
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-9-9 09:25:29 | 显示全部楼层

IAP应用,都要重新定位中断向量,
那些资料有介绍,你可以查查。

另外回到你的最初目的,
怕flash寿命缩短?多虑了吧,
我一个芯片烧两年,仍然正常。
即使挂掉,拆掉重焊一片,也不是什么难事。


回复

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-9-8
在线时间
39 小时
 楼主| 发表于 2016-9-11 14:37:07 | 显示全部楼层
xuande 发表于 2016-9-9 09:25
IAP应用,都要重新定位中断向量,
那些资料有介绍,你可以查查。

修改"system_stm32f4xx.c"的第105行,打开注释 #define VECT_TAB_RAM,这样中断向量就从sram的0x20000000开始了!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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