这是网上最容易看到的讲解,但理解上面的知识对于新手十分不友善,特别是在画最小系统的时候,画错了就是苦等一周的PCB。通常在商品化的单片机上会直接留出排针让用户选择,但对于萌新,那是相当痛苦,不知道怎么办。
知识点补充
自举空间: 可以理解为单片机电源打开后,首先执行代码的地方。
主flash: 可以理解为程序运行中不进行运算的代码存储的地方。
系统存储器:此存储器中有厂家出厂就写好的代码,用户无法修改,该代码运行后可以用数据线进行下载程序。
嵌入式SRAM:可以理解为程序运行中要运算的代码存储的地方。
举个例子进行说明:
int a=1;
while(1)
{
a=a+1;
}
要知道单片机是靠一个个指令执行的,像while语句相比较与a=a+1是不需要运算的代码,所以保存在主flash中,而变化的a=a+1;以及定义语句int a=1;存储在RAM中,也就是变量以及运算的地方都在RAM进行,而之所以int a=1;也存储在RAM中,是因为int型的a会在RAM中占两个字节且初始值为1(0x 0000 0001),执行一次a=a+1后,a变成2(0x 0000 0010),道理显而易见。详细见
FLASH与RAM在单片机中的作用
。
三种模式讲解
①BOOT1=任意电平,BOOT0=0
②BOOT1=0,BOOT0=1
③BOOT1=1,BOOT0=1。
首先要明白,不同的启动方式会影响到程序的下载方式。
第一种模式,就只能选择常见的STLINK,JTAK进行程序的烧录。按下复位键就可以运行自己写的程序,不需要改变启动方式。
第二种模式,只能选择数据线下载,下载完成后,需要手动调到第一种模式,复位后才会运行自己写的程序。其实这种操作就相当于给刚买的电脑装系统,电脑自带一个最原始的系统帮助用户安装新系统。总之十分麻烦而且下载速度非常慢。
第三种模式,方便调试,怎么个方便法,在收集了大量资料后发现并没什么用。详细见
STM32 SRAM启动,调试
总结,强烈建议用STLINK,JTAK之类的下载器,同时启动方式选模式一,又快又能调试。具体实践可参考
STM32F103C8T6核心板AD的制作过程(附加PCB和原理图文件的开源)