以下内容可能有1些毛病甚么的,欢迎各位同学指正。
关于战舰STM32开发板上的BOOT0和BOOT1,很多人会有疑问,特别是软件mcuisp上为何是DTR的低电平,RTS的高电平进入下载模式,先不管硬件上的BOOT0和BOOT1连接。
要了解BOOT0和BOOT1,首先要知道有3种模式,
(1)BOOT0接高电平,BOOT1接低电平,如果此时RESET I/O口产生复位信号,软件上点击下载,此时会把程序烧写进32里面
(2)BOOT0接低电平,BOOT1接低电平,如果此时RESET I/O口产生复位信号,32会读取FLASH的程序履行。
(3)BOOT0接低电平,BOOT1接高电平,如果此时RESET I/O口产生复位信号,32会读取FLASH的程序履行。
我们可以看到(2)和(3)是同1种模式,而(1)和(2)中BOOT1都是接高电平,所以我们在硬件上BOOT1是直接接低点平,这样我们在控制模式的时候其实就只是控制BOOT0而已。
现在看到我们的CH340控制,首先,我们在mcuisp中可以看到是选择DTR的低电平,RTS的高电平进入下载模式,此时先疏忽硬件的接口,此时当我们点击下载程序的时候,软件mcuisp会控制DTR为低电平,RTS为高电平;此时CH340中的DTR#为高电平,RTS#为低电平,(#字表示相反)。
此时可以看到Q2和Q33极管都导通,此时BOOT则为高电平,RESET则为低电平,而由于产生复位信号还需将RESET拉回高低平,所以软件此时控制DTR#输出低电平,这样RESET则变成高电平,此时软件mcuisp会自动下载,此时模式(1)所有的条件已满足,所以我们可以知道是将程序烧写进STM32里面,此时软件就不会再控制CH340,相当于CH340为断开1样,如果我们下载之前把mcuisp里面的(编程后履行)的选项也勾选上,那末该软件会通过串口控制STM32读取FLASH上的程序,所以我们会看到开发上在履行我们的程序,例如跑马灯。
所以我们在选择模式的时候是选择(DTR的低电平,RTS的高电平进入下载)模式,而不是其他。
接下来是开发板上BOOT0硬件接口,有很多人都不明白为何BOOT0硬件接口已固定,软件却还是能控制,缘由以下:
CH340软件控制上的BOOT接的电阻R71为1K,硬件跳线帽BOOT0连接的R40为100K,二者相差上百倍,很明显可以看出,只有我们想要使用到软件接口,硬件接口就相当于可以疏忽,由于软件接口的BOOT0电位更接近于VCC3.3或GND,而在我们不使用软件CH340的同时,硬件接口就派上用处了,由于此时软件控制的CH340相当于断开的,所以BOOT硬件连接上虽然固定也不会受影响。
而现在模式(2),我们把PA9,PA10和RXD,TXD上的跳线帽拿走时,然后把BOOT0接到0,再手动按上RESET复位键以后,我们可以看到STM32开始复位履行FLASH里面的程序。
而我们要下载程序到32里面也能够像51单片机1样,不需要CH340等电平转换,只需用到1条PL2303下载线,直接接到PA9和PA10,然后把BOOT0接高电平,BOOT1接低电平,再单击RESET按键,点击mcuisp上的程序下载,此时一样可以下载程序进去。
(在此进程中需要注意到的几点:有可能下载不成功,mcuisp窗口上显示1堆数字,此时多是PL2303的驱动问题,只需要重新安装下驱动就好)。
还有就是有人做实验的时候可能会发现刚把BOOT0从高电平换到低电平,此时还是可以进行下载模式,这多是芯片上电容储能的问题,由于只要电容上的电荷超过1半则为高电平,所以只要过1会儿等电容上的电荷释放就好。
注意:程序烧写和履行的时候烧写(模式1)和履行(模式2)是分为两种模式,两步履行的