STM32单片机的FLASH编程详解

前面说到了单片机的ROM、RAM两块存储的位置和大小,以及简单的变量或函数的存储地址,这时候你应该对单片机的内存有了了解。

当你用仿真器下载程序的时候,前面提到的BIN文件的数据(也就是原始的ROM二进制数据,0101那种),会通过下载器0x0800 0000这块内存。之后根据你的下载选项可选自动运行,或者复位再运行。当然也有的同学和我这种穷*一样不舍得买几十块钱甚至更贵的下载器,那么就是使用串口进行下载(也就是ISP),这点和51一样,只不过不需要所谓的冷启动了。对应的引脚是PA9(TXD)、PA10(RXD)。

        你知道其中发生了什么吗?先以下载器为例,此时你的单片机和下载器最少只有3根线,首先是GND,也就是负极,你得共地才能确定0电平。然后是CLK(或者TCK)和DAT(或者叫TMS、DIO),也就是PA14和PA13这俩引脚,和IIC类似,数据和时钟,可读可写,那么你的单片机程序就是通过这个串行总线更新的。因此UP设计电路图一般会预留串口和仿真接口用于调试,像这样。 

    那么你如果用的串口更新呢?首先你要保证boot0引脚拉低了再启动,也就是先拉低boot0再复位,这样启动的时候就是boot0为0了,也就是低电平。或者不复位而是按住boot0为低电平直接断电重新上电。然后你就可以用串口更新软件把hex文件发过来了,之后同样的复位重启,运行新程序。虽然过程有点复杂,但是有自动下载电路,可以用串口的DTR和RTS这俩信号协助你控制RST(复位)和boot0,这样就不用你管了。 

 

   有什么区别呢?仿真器快,对吧。还有就是串口只能下载,仿真器可以仿真,就是一步步运行程序,便于查看效果。我们先从下载方面分析,再说仿真方面。

        你写过stm32内置flash编程程序,你应该知道,就是那块0x0800 0000的存储器,你除了用来存储你的程序并运行外,你还可以用你的程序去读写它,只要没有碰到你自己的程序那块,不然那就是格式化C盘的效果,你的程序可能就挂了

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值