其实博主在一年前就已入门stm32,但是由于当年C语言和相关知识比较薄弱,仅仅是跟着原子教程学习了前面的外设内容(此处并没有任何对原子有任何冒犯的意思,原子的教程是十分好的,论坛上资源也十分充足),并没有对stm32有个系统的认识。由于最近项目需要用到stm32F407,所以下定决心深入研究,并坚持把学到的知识做成博文,希望可以帮助到有需求的人,同时共勉,一起进步。
言归正传,boot在计算机科学中被翻译成引导,在stm32boot选择的就是程序从何处启动,何处是什么意思,下面是官方手册介绍
从官方的手册可以看出,支持三种boot mode:
mode | select | decription | |
---|---|---|---|
boot 0 | boot 1 | ||
主闪存存储器 | 0 | X | 正常模式,运行用户自定义程序的必然选择 |
系统存储器 | 1 | 0 | 启动bootloader,宏观来讲就是这个存储器提供了一个usb下载程序,我们启动这个下载程序程序就可以通过usb下载程序到FLASH, 注意是下载到FLASH,如果我们需要运行刚才下载的程序,那么我们必须转化换成正常模式(从FLASH启动),不过可以设计电路实现一键下载。见后续... |
内置SRAM | 1 | 1 | 这种模式是调试使用,掉电不保存;减少FLASH擦除次数 |
- 从主闪存存储器启动:
这是我们使用JTAG或者SWD下载程序程序时正常模式,程序直接下载到 FLASH 中,重启跑我们的程序也必须选择这种模式。
- 从系统存储器启动
从此处启动,即跑usb下载程序,不再赘述,下面介绍正点原子的usb一键下载电路。
其实真正的usb下载电路是不需要ch340驱动的,不过繁琐,需要我i们手动切换boot模式,借助ch340可以实现usb一键下载(此处希望还年轻的同学 学好模电、数电)
实现的过程有兴趣的同学可以参考一下博客
https://blog.csdn.net/wukuan_123/article/details/80892925
- 内置SRAM启动,使用SRAM调试