高级会员

- 积分
- 576
- 金钱
- 576
- 注册时间
- 2014-8-3
- 在线时间
- 18 小时
|
5金钱
我看了看STM32中文参考手册上2.4 启动配置这一节,我的理解是:
B0=0,B1=1时,复位后启动空间把system memory映射进入,然后运行,然后我们通过串口下载,把编程到Flash里。
B0=0,B1=0时,复位后启动空间把Flash映射进入,然后运行,这个时候就运行我们下载进入的程序了。
然后我们可以在程序中对FLash编程,我的问题是这个编程的地址应该不可以在Flash里的代码区吧,比如代码大小1KB,那么0X0800 0000到0X0800 03FF这一段都是代码区,我们如果在程序中对这一段
进行了重新编程,那么这一段的代码就没了。那么在复位后(B0=0,B1=0),启动空间再要把Flash映射进入时,在之前被修改的地方会有错误,这样运行的程序不就会死机吗?所以我觉得在程序中对
Flash编程的话,应该先检查地址是否在0X0800 0400到0X0807 FFFF之间吧(假如代码大小是1K)。
但我看给的stmflash.c里,是检测地址是否在0X0800 0000 到 0X0807 FFFF之间,这样的话岂不是会修改了代码区的数据?在复位后运行死机?
|
|