岳阳网站建设制作,常州经开区建设局网站,地板网站建设,网站建设服务器怎么设置一、官方提供的启动模式说明硬件BOOT引脚接法表格从表格可以看出有三种启动模式#xff0c;然后对应这不同的存储器启动#xff0c;那我们现在疑问为啥有三种不能只有一种就好#xff0c;还有存储器启动区域怎么区分#xff0c;有些乱#xff0c;带着这些疑问#xff0c;…一、官方提供的启动模式说明硬件BOOT引脚接法表格从表格可以看出有三种启动模式然后对应这不同的存储器启动那我们现在疑问为啥有三种不能只有一种就好还有存储器启动区域怎么区分有些乱带着这些疑问我们往下分析。2.存储器解释看了上面表格可能对存储器的说明有些模糊我们先来说说它的含义。1主闪存存储器这个大家可以理解就是我们用来存放程序的Flash2系统存储器这个不是我们表面所看的Flash,它是厂家自己定义的一块存储区域里面内置了一个BOOTLOADER程序程序这个程序就存放在这个区域中。3SRAM这个大家都知道没啥特殊的3.模式的区别现在我们知道各个存储区域的含义那我们就来说下为啥子会分这几个启动模式我们都知道程序都是保存在Flash的那么我们写的程序要运行跑起来是不是要从Flash区域开始运行啊对吧所以我们默认应当是硬件上电后应该要以第一种模式运行也就是将BOOT1随意接但BOOT0一定要接地这样程序才是从Flash开始启动运行奔跑起来啊。既然程序都是从Flash运行一直选这一个模式肯定没有错啊为啥子还有其他模式啊首先你程序写好是不是要烧录到硬件MCU上那么你的烧录方法就关系到这个不同启动方式第一种用STLINK或者JTAG下载程序是直接将程序写入到FLASH上面第二种如果你是用串口下载程序比如STM32的串口1可以用来接收下载程序关键点就在于你用串口下载程序程序不是像STLINK或者JTAG直接对Flash进行写操作而是在有一段代码功能负责将串口1接收到的程序写入FLASH中。也就是有个间接的过程。换个意思理解你从电脑通过USB下发程序硬件接收是通过串口1接收那么是不是得段代码使能串口1接收啊然后再将串口1收到的程序写到Flash中啊。那么这段代码就存储在 系统存储器这段代码是ST出厂时就固化在里面了。所以当你使用串口下载程序你是不是要先让启动厂家固化的这段代码所以这时候得先设置启动方式为第二种启动这样才能让这段代码运行起来来接收你往串口1发送的数据。当你下载完以后启动模式是不是得切换成第一种啊这样你写的程序才能先从Flash运行啊。没有错把。我们常用的就是前面两种第三种很少用基本不用这里不做解释4.针对第二种的控制做解释在这里如果有做过硬件的同学肯定知道默认画板都会搞两个10K下拉电阻接至BooT1和BooT0既将BooT0和BooT1都接地那么这时候就会有疑问BooT1不是随意接都可以那我接高行不行其实BooT1接高接地是关于你电路匹配的如果你要通过串口下载你是不是要有个电路在下载时候先让芯片进入到第二种模式当下载完芯片在跳转到进入到第一种模式啊程序开始运行那我们逻辑应该是BOOT1始终保持位0我们只需要控制BOOT0引脚为1或者为0就可以在两种模式下切换了对不对啊。上原子的电路图我们需要注意一点CH340G上电后DTR#和RTS#都为高电平分析1上电是。DTR和RTS都为高难是不是两个三极管都没动作而BOOT1 BOOT0都为0所以这时候是从FLASh启动正常运行。2当我们下载时控制RTS拉低DTR还保持着原来高电平那这时候是不是两个三极管导通BOOT0先至高reset在拉低因为复位电路存在电容与1N4148二极管的存在时间存在滞后复位完后这时候就进入到第二种模式啦那么这时候我们是不是要把RESERT啦高回来这样才可以运行可以下载程序啦不是一直处于复位状态3当你下载完程序这时候要把DTR拉高回来让芯片先复位然后再把RTS也拉高回来这时BOOT0拉低紧接着RESERT脚也跟着拉高回来了这样就进入正常模式回来了。