STM32新手入门教程

 1.芯片介绍

         大家好,看到网上好多的关于STM32的资料,也想写一份关于自己的在嵌入式开发的感悟,也希望自己能做一份全面的STM32攻略,让新入门的朋友们少走一些弯路,我将从寄存器底层原理开始讲解,然后从HAL库和标准库两个方面对STM32进行展开细说。我们整个系列的文章,将围绕STM32F1系列芯片(STM32F103C8T6)做出讲解。

STM32新手入门教程_第1张图片

         本表介绍了STM32系列芯片具有的常见外设资源,我们将从以上的部分逐一进行介绍,可以达到快速上手的目的。

2.芯片结构

STM32新手入门教程_第2张图片

        部分1 是单片机系统的M3内核,从M3内核中引出来三条总线,分别是ICode指令总线,DeCode 数据总线,System系统总线,其中ICode和DeCode连接的是Flash闪存,其中Flash中存储的就是我们编写的程序ICode的总线是用来加载程序指令,也就是代码,DCode是用来加载数据也就是我们代码中定义的常量,调试数据等。系统总线则连接到其他外设,比如SRAM用来存储程序运行时的变量数据。

        部分4主要是总线矩阵引出的AHB(先进高性能总线)系统总线主要是用来挂载外设的,其中复位和时钟还有SDIO(SDIO 就是 SD 的 I/O 接口的意思)但是用的不是SD卡协议,用的是SDIO协议,再后来就是两个桥接,接到了APB1和APB2两个外设总线上用于连接一般的总线,因为AHB和APB总线传输格式和数据有差异所以需要桥接来进行转换和缓存,AHB的性能要比APB高APB2的性能又要比APB1高,APB2和AHB一般是同频率72MHz,APB1一般是36Mhz,APB2所以连接的外设是稍微重要的部分具体同种有展示

        部分3则是DMA了主要起到搬运数据的作用我们可以当作为了不让CPU占用大量的CPU资源那么我们会用DMA来转运,通常与ADC进行搭配,这些后期我们都会讲解到,DMA通过DMA总线连接到总线矩阵上,具有跟CPU一样的总线控制权来访问外设,需要搬运数据时候这些外设就会通过请求总线,发送DMA请求,然后DMA可以获得总线控制权,访问并转运数据。

3.芯片引脚及功能图

 STM32新手入门教程_第3张图片

 4.STM32启动

4.1启动配置

STM32新手入门教程_第4张图片

          STM32系列可以有3种启动模式,由BOOT1与BOOT0的设置决定选择Flash、System memory还是SRAM作为启动空间。

        ●从主闪存存储器启动(Main Flash memory):主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000。

         ● 从系统存储器启动(System memory):系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的 地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。 

         ●从内置SRAM启动(Embedded SRAM):只能在0x2000 0000开始的地址区访问SRAM,启动后这个映射消失,需要重定位中断向量表。

        STM32将0x00000000到0x0005FFFF的区域作为启动空间(boot space)的别名区。

   4.2启动的相关概念介绍

        首先我们了解MDK编译的过程文件(11种).o文件可重新定向对象文件,每个.c/cs文件都会对应一个.o文件,然后由.o文件链接形成.axf文件,我们在仿真的时候会用到这个文件,生成的INTEL HEX文件,用于MCU的运行,由.axf转换形成的,.map是连接器生成的列表文件,对分析程序存储占用情况很有用,还有一些其他无关紧要的就不在此细说了。

        MAP:简单的说就是包含了文件大小等相关信息,分析.C文件占用FLASH,SRAM的大小方便代码的优化。

        MAP的组成:节区的跨文件引用(函数之间的调用关系),删除无用节区(删除未使用的变量产生一些列表),符号映像表(程序/数据,在存储器中的地址,类型,大小等),存储器映像索引(函数等信息地址等占用大小),映像组件大小(整个.o(由.c和.s生成)占用空间大小汇总信息)

你可能感兴趣的:(STM32,stm32,嵌入式硬件,单片机)