STM32F103单片机的启动模式介绍

    朋友介绍说ST的单片机很好用,编程很方便,于是乎就把它用在了自己的一个应用上。这里只说一些和学习芯片相关的吧。

    我手里的芯片型号是STM32F103CBT6,在画板子的时候,注意到有几种启动模式,引脚的设置不尽相同,这是很需要注意的问题吧,毕竟,如果设置不好,烧写不进程序,那板子就整体作废了。

    在STM32F10XXX手册里的解释如下:(@#$^##^^%$##>...对于纯新手来说,这还真是不好明白啊)

   

文件中的解释如下:

    在系统复位后,SYSCLK的第4个上升沿,BOOT管脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。
在从待机模式退出时,BOOT管脚的值将被被重新锁存;因此,在待机模式下BOOT管脚应保持为需要的启动配置。在启动延迟之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。
因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。
    根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问:
    ●从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000。
    ●从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x1FFF F000)访问它。
    ●从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。

 

    虽然如此,但是还是不很明白,我只是想知道,我手头的J-link仿真器,怎样设置可以既能下载程序,还可以运行程序,仅此而已。

    在度娘的帮助下,查看“奋斗版 STM32 开发板V2.0 的硬件说明”,里面有这样几句话:

    Boot1—Boot0: x0: 内部程序存储区启动 01:系统存储区启动(为异步通信ISP 编程方式)
    在此将BOOT1 始终设置为0, BOOT0 为可变的状态,在正常模式下将其置为0,在ISP
    编程时将其置为1。用JP1 跳线块设置,开路为ISP 模式,短路为正常运行模式。

这就大概明白了,至少在画板的时候可以确定一下引脚设置,boot1直接拉低就可以了。boot2根据编程或者运行用户代码的不同需要进行设置。

比知道对不对,需要验证一下了.

板子做出来后,经测试,boot1直接拉低,boot0也直接拉低。因为我使用的是J-link,所以,直接设置成内部程序存储区启动就可以了。如果使用ISP方式(串口下载)可能比较麻烦,这里没有使用,所以不再介绍了。

你可能感兴趣的:(单片机)