OpenEdv-开源电子网

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

分享我的项目必需品:IAP+YMODEM+CRC16+AES256+PC端软件+hex合并

    [复制链接]

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-2-25 20:35:28 | 显示全部楼层
阿凯 发表于 2017-2-24 16:21
楼主我阅读了您的代码好像没有发现crc16的检错功能

代码中搜索关键字仔细看看吧
我的博客:http://blog.csdn.net/itdo_just
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

2

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2013-1-23
在线时间
28 小时
发表于 2017-3-2 14:18:25 来自手机 | 显示全部楼层
谢谢分享,hextobin这个软件的  解密key怎么获取呢
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-3-13
在线时间
9 小时
发表于 2017-3-9 16:38:19 | 显示全部楼层
楼主,我的IAP遇到困难了。能不能加个QQ聊下。谢谢大神!1796480563
回复 支持 反对

使用道具 举报

18

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
363
金钱
363
注册时间
2015-10-29
在线时间
49 小时
发表于 2017-3-23 11:49:41 | 显示全部楼层
我的天,这么详细,楼主辛苦,感谢楼主分享~!
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2015-9-6
在线时间
36 小时
发表于 2017-3-30 23:12:12 | 显示全部楼层
相当的nice
回复 支持 反对

使用道具 举报

0

主题

26

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1060
金钱
1060
注册时间
2016-7-25
在线时间
115 小时
发表于 2017-3-31 16:20:35 | 显示全部楼层
太感谢了,目前正值需求!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-4-5
在线时间
2 小时
发表于 2017-4-10 10:58:27 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2016-12-27
在线时间
34 小时
发表于 2017-4-12 09:23:49 | 显示全部楼层
cool,
回复 支持 反对

使用道具 举报

9

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-4-26
在线时间
64 小时
发表于 2017-4-26 13:21:04 | 显示全部楼层
很不错,辛苦了。好久之前的了。
回复 支持 反对

使用道具 举报

38

主题

195

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1169
金钱
1169
注册时间
2015-11-9
在线时间
247 小时
发表于 2017-5-5 16:42:49 | 显示全部楼层
楼主,执行了FLASH_Unlock();后整片flash应该全部擦除了吧,这样程序不就挂了吗?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-10-12
在线时间
5 小时
发表于 2017-5-5 17:59:35 | 显示全部楼层

好详细啊,支持
回复 支持 反对

使用道具 举报

8

主题

540

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2845
金钱
2845
注册时间
2016-5-13
在线时间
180 小时
发表于 2017-5-9 16:42:58 | 显示全部楼层
看到楼主引用我的hex合并帖子。好激动啊。
我的帖子有更新了:http://www.openedv.com/forum.php ... id=76644&extra=

虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

38

主题

195

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1169
金钱
1169
注册时间
2015-11-9
在线时间
247 小时
发表于 2017-5-11 11:20:29 | 显示全部楼层
有个问题,把接收到的数据写入FLASH时用的是下面的这段:
                  memcpy(buf_ptr, packet_data + PACKET_HEADER, packet_length);
                  ramsource = (uint32_t)buf;

                  /* Write received data in Flash */
                  if (FLASH_If_Write(&flashdestination, (uint32_t*) ramsource, (uint16_t) packet_length/4)  == 0)
                  {
                    Send_Byte(ACK);
                  }
而flashdestination = APPLICATION_ADDRESS;是一个固定的地址,那岂不是每次接收都是从APPLICATION_ADDRESS这个地址开始写??这样永远写的是APPLICATION_ADDRESS开始的1024字节啊
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2017-5-13
在线时间
2 小时
发表于 2017-5-13 23:19:40 | 显示全部楼层
学习了,正好在做毕设,,用的STM32F103C8T6代码量有点大,不够用,有个问题想问楼主?如果FLASH不够用,能不能用AT24C256代替呢?
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-5-15 09:12:30 | 显示全部楼层
shibinjie 发表于 2017-5-11 11:20
有个问题,把接收到的数据写入FLASH时用的是下面的这段:
                  memcpy(buf_ptr, packet_data ...

理解问题,把代码看全
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-5-15 09:13:11 | 显示全部楼层
唐国华 发表于 2017-5-13 23:19
学习了,正好在做毕设,,用的STM32F103C8T6代码量有点大,不够用,有个问题想问楼主?如果FLASH不够用,能 ...

建议你换个大点的FLASH吧,根据需求来选芯片
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

8

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2017-1-14
在线时间
48 小时
发表于 2017-5-15 10:47:42 | 显示全部楼层
这贴不顶真对不住楼主了,下了,慢慢看慢慢学。谢谢分享!
回复 支持 反对

使用道具 举报

38

主题

195

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1169
金钱
1169
注册时间
2015-11-9
在线时间
247 小时
发表于 2017-5-16 12:57:54 | 显示全部楼层
229382777@qq.co 发表于 2017-5-15 09:12
理解问题,把代码看全

恩,已看明白,多谢
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-4-24
在线时间
20 小时
发表于 2017-5-17 17:58:06 | 显示全部楼层
请教个问题,做无线IAP,选择GPRS通信,用的宏电H7710   DTU,但是一般的串口转网络调试助手没有校验功能,该如何解决校验问题呢
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-7 15:47:44 | 显示全部楼层
本帖最后由 Eatun 于 2017-7-8 09:19 编辑

你好,为什么实际项目中不会那样使用,也不会使用串口直接不通过协议传输文件
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-7 15:49:50 | 显示全部楼层
本帖最后由 Eatun 于 2017-7-7 15:57 编辑

你好,为什么实际项目中不会那样使用,也不会使用串口直接不通过协议传输文件
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-7 16:00:11 | 显示全部楼层
实际项目中并不会那样使用,也不会使用串口直接不通过协议传输文件
你好,为什么项目中不会那样使用,也不会使用串口直接不通过协议传输文件
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-7-8 10:43:37 | 显示全部楼层
Eatun 发表于 2017-7-7 16:00
实际项目中并不会那样使用,也不会使用串口直接不通过协议传输文件
你好,为什么项目中不会那样使用,也不 ...

因为不稳定,会丢数据,你需要用协议保证传输不出问题
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-1-8
在线时间
12 小时
发表于 2017-7-9 11:27:08 | 显示全部楼层
正在研究
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-18 20:43:22 | 显示全部楼层
在程序中我使用的升级方式是通过串口发送字符‘1’(可自行修改),串口收到字符‘1’后,向指定的地址写入0xAAAA,然后使用软复位回到bootloader
你好,我想问一下实现这部分功能的代码在哪里呀,一直找不到
回复 支持 反对

使用道具 举报

7

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-11
在线时间
22 小时
发表于 2017-7-24 16:11:27 来自手机 | 显示全部楼层
请问你的这个超级终端支持win7 64位系统吗?
回复 支持 反对

使用道具 举报

7

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-11
在线时间
22 小时
发表于 2017-7-24 16:12:14 来自手机 | 显示全部楼层
请问你的这个超级终端支持win7 64位系统吗?我用了一直没任何信息显示
回复 支持 反对

使用道具 举报

7

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-3-11
在线时间
22 小时
发表于 2017-7-24 16:12:27 来自手机 | 显示全部楼层
请问你的这个超级终端支持win7 64位系统吗?我用了一直没任何信息显示
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-7-25 09:17:49 | 显示全部楼层
linlima 发表于 2017-7-24 16:12
请问你的这个超级终端支持win7 64位系统吗?我用了一直没任何信息显示

可以支持,XP下有自带,win7 64才需要自行下载,如果我提供的不行,你上网再重新下一个试试,网上很多这个软件的下载链接
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-28 11:41:40 | 显示全部楼层
本帖最后由 Eatun 于 2017-7-28 11:42 编辑

C:\Users\Eatun\Desktop\QQ截图20170728113128.png
传输bin文件之前用不用将hex文件先下载进去,如果不用,32试怎么接收这个bin文件的呢?
QQ截图20170728113128.png
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-7-28 16:29:08 | 显示全部楼层
Eatun 发表于 2017-7-28 11:41
传输bin文件之前用不用将hex文件先下载进去,如果不用,32试怎么接收这个bin文件的呢?

IC是死的,如果你不烧写程序进去他无论如何也无法做任何处理,所以你传输bin文件之前,要先把bootloader这段程序烧写进去,bootloader只保留最简单的功能,就是将bin送到指定的APP代码区,所以你传输bin文件之前"需要"将bootloader的hex文件先下载进去,我文章中写的意思是,传输bin文件是指升级,需要升级才传,由客户自己传。但是你在工厂出厂时不可能让产线先帮你烧bootloader再烧APP,这样需要两个步奏,会增加工作量,所以提出了在出厂时,由开发者将bootloader和APP这两个hex文件进行合并为一个文件,以提高产线效率
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-7-28 16:37:41 | 显示全部楼层
Eatun 发表于 2017-7-18 20:43
在程序中我使用的升级方式是通过串口发送字符‘1’(可自行修改),串口收到字符‘1’后,向指定的地址写入0x ...

写在APP里面,如果你在bootloader里面找的话肯定只能找到判断0xAAAA这个这段代码,所以请去APP里面看下,串口处理程序里面
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

3

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2017-7-29
在线时间
18 小时
发表于 2017-7-29 11:12:54 | 显示全部楼层
强,学习了, 不错
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-29 11:49:50 | 显示全部楼层
229382777@qq.co 发表于 2017-7-28 16:29
IC是死的,如果你不烧写程序进去他无论如何也无法做任何处理,所以你传输bin文件之前,要先把bootloader ...

嗯嗯,很感谢。所以第一次烧录的程序是boot和app合并的hex文件,而不是bin文件?需要转成bin格式的文件只有app程序,而不是boot和app合并的hex文件

然后烧录了合并后的文件是会直接执行app程序,而不是执行BootLoader程序再跳转到app?

这个几个问题我想确认一下
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-29 11:50:40 | 显示全部楼层
229382777@qq.co 发表于 2017-7-28 16:37
写在APP里面,如果你在bootloader里面找的话肯定只能找到判断0xAAAA这个这段代码,所以请去APP里面看下, ...

嗯嗯,我已经找到了
回复 支持 反对

使用道具 举报

1

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2017-7-25
在线时间
39 小时
发表于 2017-7-29 12:09:09 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-7-29 13:24:46 | 显示全部楼层
本帖最后由 229382777@qq.com 于 2017-7-29 13:27 编辑
Eatun 发表于 2017-7-29 11:49
嗯嗯,很感谢。所以第一次烧录的程序是boot和app合并的hex文件,而不是bin文件?需要转成bin格式的文件只 ...

第一次烧的是hex;需要转成bin的只有app程序;无论任何情况下,只要复位了都会先运行bootloader再跳转到APP运行,因为只要复位或重启了,bootloader都会判断下是否需要更新APP,不需要则直接运行现有的APP代码
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-7-31 09:13:36 | 显示全部楼层
229382777@qq.co 发表于 2017-7-29 13:24
第一次烧的是hex;需要转成bin的只有app程序;无论任何情况下,只要复位了都会先运行bootloader再跳转到A ...

嗯嗯,明白了,真的很谢谢你
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2012-11-13
在线时间
20 小时
发表于 2017-8-2 07:19:46 | 显示全部楼层
首次下载代码时为了方便需要合并bootloader和APP的hex文件,Hex合并本论坛有人已经提供了一个很好的方法 (http://www.openedv.com/thread-70162-1-1.html),转成一个hex文件后通过上面那个PC软件,可以直接生成bin文件,之后通过超级终端接通串口传输过去就行了。

以上说的是不是有些问题? 首次下载应该用Jlink或ISP方式才可烧录合并后的Hex文件吧?
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-8-2 08:31:36 | 显示全部楼层
229382777@qq.co 发表于 2016-7-6 21:58
另外请教个问题,一般如果硬件上不加eeprom,想要保存掉电不丢失的数据,又需要频繁改动这些数据,显然写fl ...

可以使用RAM标记法升级,之前我也设计在flash、电池寄存器里标记,但后面我改成RAM标记(boot工程编译时不要初始化标记的RAM)。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-8-2 08:33:25 | 显示全部楼层
cookles 发表于 2016-9-18 09:57
“在程序中我使用的升级方式是通过串口发送字符‘1’(可自行修改),串口收到字符‘1’后,向指定的地址写入 ...

boot里面可以添加一个进入boot判断条件,就是上电长按某个键盘强制进入BOOT。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-8-2 09:33:10 | 显示全部楼层
本帖最后由 229382777@qq.com 于 2017-8-2 09:37 编辑
good200xy 发表于 2017-8-2 07:19
首次下载代码时为了方便需要合并bootloader和APP的hex文件,Hex合并本论坛有人已经提供了一个很好的方法 (h ...
首次生成的hex文件需要jlink或ISP,之后APP生成的bin可通过终端发送
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-8-2 09:39:50 | 显示全部楼层
DongInker 发表于 2017-8-2 08:33
boot里面可以添加一个进入boot判断条件,就是上电长按某个键盘强制进入BOOT。

我只提供了一种方式,其它进入boot的方式可以根据需求很容易根据代码自行修改
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

4

主题

36

帖子

0

精华

高级会员

Rank: 4

积分
766
金钱
766
注册时间
2017-1-23
在线时间
162 小时
发表于 2017-8-2 17:21:54 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-8-3 10:15:18 | 显示全部楼层
本帖最后由 Eatun 于 2017-8-3 10:46 编辑

你好,我想请问一下APP中stm32f0xx_syscfg.c的作用是什么呀?SYSCFG这个是什么寄存器?

我想移植到F103中,发现F1没有这个stm32f0xx_syscfg.c文件和SYSCFG这个寄存器

#define APPLICATION_ADDRESS     ((uint32_t)0x08005000)
void IAP_Set()
{
   uint32_t i = 0;
/* Relocate by software the vector table to the internal SRAM at 0x20000000 ***/  
  /* Copy the vector table from the Flash (mapped at the base of the application
     load address 0x08005000) to the base address of the SRAM at 0x20000000. */       
  for(i = 0; i < 48; i++)//先将”应用程序“的中断向量表拷贝至SRAM中
  {
    *((uint32_t*)(0x20000000 + (i << 2)))=*(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
        }
  /* Enable the SYSCFG peripheral clock*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);        
        /* Remap SRAM at 0x00000000 */       
        /*然后在配置SYSCFG寄存器的最低两位,将SRMA映射至地址0,这样,在发生中断后,CPU从地址0取中断向量,
        这样实际上就是从SRAM中取的中断向量,而SRAM中的中断向量表又是之前从”应用程序“的中断向量表拷贝过
        来的,所以,最终其实是取的”应用程序“的中断向量表。*/
  SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
}
这段代码和//SCB->VTOR = FLASH_BASE | 0x10000; /* Vector Table Relocation in Internal FLASH. */
        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);(这是F1中的)这个函数有关系吗?


回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-8-3 10:43:29 | 显示全部楼层
本帖最后由 229382777@qq.com 于 2017-8-3 10:44 编辑
Eatun 发表于 2017-8-3 10:15
你好,我想请问一下APP中stm32f0xx_syscfg.c的作用是什么呀?SYSCFG这个是什么寄存器?

我想移植到F103 ...

这些是系统自带的寄存器,你看程序这些代码实现的功能是什么,如果有用百度看下103没有对应的,如果你程序还没看懂,那你遇到的问题还会更多,本来这个程序就不复杂,多看几遍能看懂的
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-8-3 10:50:05 | 显示全部楼层
229382777@qq.co 发表于 2017-8-3 10:43
这些是系统自带的寄存器,你看程序这些代码实现的功能是什么,如果有用百度看下103没有对应的,如果你程 ...

嗯嗯,app中其他的程序都看的懂,
#define APPLICATION_ADDRESS     ((uint32_t)0x08005000)
void IAP_Set()
{
   uint32_t i = 0;
/* Relocate by software the vector table to the internal SRAM at 0x20000000 ***/  
  /* Copy the vector table from the Flash (mapped at the base of the application
     load address 0x08005000) to the base address of the SRAM at 0x20000000. */        
  for(i = 0; i < 48; i++)//先将”应用程序“的中断向量表拷贝至SRAM中
  {
    *((uint32_t*)(0x20000000 + (i << 2)))=*(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
        }
  /* Enable the SYSCFG peripheral clock*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);         
        /* Remap SRAM at 0x00000000 */        
        /*然后在配置SYSCFG寄存器的最低两位,将SRMA映射至地址0,这样,在发生中断后,CPU从地址0取中断向量,
        这样实际上就是从SRAM中取的中断向量,而SRAM中的中断向量表又是之前从”应用程序“的中断向量表拷贝过
        来的,所以,最终其实是取的”应用程序“的中断向量表。*/
  SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
}

就是这段程序看不懂,这段代码和//SCB->VTOR = FLASH_BASE | 0x10000; /* Vector Table Relocation in Internal FLASH. */
        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);(这是F1中的)这个函数有关系吗?
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-8-3 11:02:11 | 显示全部楼层
Eatun 发表于 2017-8-3 10:50
嗯嗯,app中其他的程序都看的懂,
#define APPLICATION_ADDRESS     ((uint32_t)0x08005000)
void IAP_ ...

抱歉,帖子一年多以前写的了,我也有一段时间没接触STM32了,如果重新去看代码的话要花点时间,要去查下寄存器手册具体作用是什么,SCB->VTOR这个寄存器你查下手册或百度,不过原来我是参考原子哥的代码改到F0上面的,F1上的话你结合下原子哥的程序,他代码基本上不用做什么修改,只是把加密和协议这块加上就行了
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-8-3 11:53:06 | 显示全部楼层
229382777@qq.co 发表于 2017-8-3 11:02
抱歉,帖子一年多以前写的了,我也有一段时间没接触STM32了,如果重新去看代码的话要花点时间,要去查下 ...

嗯嗯,好的,谢谢哟!
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2017-7-7
在线时间
14 小时
发表于 2017-8-5 09:22:27 | 显示全部楼层
本帖最后由 Eatun 于 2017-8-11 15:03 编辑

你好,那个超级终端可以发单个字符吗?





回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-1-18 21:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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