stm32简介

来源:互联网 发布:辐射4捏脸数据 黑寡妇 编辑:程序博客网 时间:2024/05/19 02:01

      很久之前就已经创建了一个CSDN的号,可是一直都是在浏览别人的博客,转别人写的,从未想过自己也来写写,呵呵,如今突然心血来潮想把自己学的东西写下来,一来锻炼下自己文笔与思维,总结学习的经验教训,方便以后本人自己来查阅,二也希望能和在这方面有兴趣同学互相探讨,自己也是菜鸟一枚,怀揣着对未来的憧憬,刚刚大二才结束,下学期就大三了,时间真是快啊,哈~~说了这么多废话,那下面就开始进入正题吧。

         意法半导体(STMicroelectronics)公司于2007年6月发布的STM32系列的单片机,经过3年发展,STM32已经成为业界最宽广的基于ARMCortex-M3 内核的微控制器系列,目前也有很多型号,6大产品系列(超值型系列STM32F100,基本型系列STM32F101,USB基本型系列STM32F102,增强型系列STM32F103,互联型系列STM32F105/107和超低功耗系列STM32L),带有丰富多彩和功能灵活齐全的外设,并保持全产品系列上的引脚兼容。

         STM32是一个通用微控制器产品系列,为了适应众多的应用需求和低成本的要求,在产品的规划和设计上遵循灵活多样,配置丰富和合理提供多宗选项的原则,如齐全的flash容量配值,提供16~1024KB的宽范围选择;每一个外设都拥有多种配置选项,使用者可以按照具体的需要做出合理的选择,如USART可以实现普通UART,还可以实现LIN通信协议等等。

         Cotex-M3处理器包括处理器内核,嵌套向量中断控制器(Nested Vectored Interrupt Controller,NVIC),存储器保护单元,总线接口单元和跟踪调试单元等。

         具体的网上有大片大片资料,感兴趣可以自己去查查。

         感觉上面说的也是废话,估计你们也直接跳过了,既然本篇叫简介,那就直观点,先上图,下面是一个LQFP100封装的STM32芯片

                

很容易就可以看出,它总共有80个I/O端口引脚,总共是分5个PORT;分别是

1.      PA0—PA15;

2.      PB0—PB15;

3.      PC0—PC15;

4.      PD0—PD15;

5.      PE0—PE15;

对应的IO口也有相应的复用可能,可参考下面的表格:

       


       


      

 

 下面来介绍一下STM32系列产品的命名规则:


        

 相信现在你应该就明白了STM32F103VBT7是什么意思了吧偷笑


 

以下是STMF103系列的系统结构:



可以很清晰看出有四个驱动单元:

1.      DCode总线(D-bus)

2.      系统总线(S-bus)

3.      DMA1

4.      DMA2

四个被动单元:

1.      内部的SRAM

2.      内部的闪存存储器flash

3.      FSMC

4.      AHB到APB的桥(AHB2APBx),它连接所有的APB设备。

这都是通过一个多级的AHB总线构架相互连接的,各单元的主要功能如下:

1.  ICode总线:将Cotex-M3内核的指令总线与flash闪存指令接口相连接,用于指令预取。

2.  DCode总线:将Cotex-M3内核的DCode总线与闪存存储器的数据接口相连接,用于常量加载和调试方向。

3.  系统总线:连接Cotex-M3 内核的系统总线(外设总线)到总线矩阵,总线矩阵协调者内核和DMA间的访问。

4.  总线矩阵:总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁采用轮换算法,AHB外设通过总线矩阵和系统总线连接,允许DMA访问,总线矩阵包括四含4个驱动单元及4个被动单元。

5.  AHB到APB的桥:两个AHB/APB桥在AHB和两个APB总线间提供同步连接,APB1操作速度限于36MHZ,APB2操作与全速(最高72MHZ)。


以下是系统内部结构图(performance line block diagram )


         嗯,这一篇大概就写到这里了,本篇就是一个宏观上的对STMF10X系列结构的认知,所以都是直接贴图的,也许刚接触的人会觉得这是什么,完全看不懂,没关系,呵呵,所有人都是这么来的,也许别人一开始就先从软件编程开始熟悉各个模块,像最基本的GPIO模块,但最终这些他们都会要补的,所以了,还不如之前先大概扫一眼有个印象,之后学深了想看时候就可以回来再继续深入研究。

         第一次写,整个思路还是有点乱的,将就将就吧,下一篇就开始正式介绍了,咱们不学别人先从GPIO开始,先从复位时钟控制模块(RCC)开始,第一次接触ARM时候就在这里面困惑好久,相信很多学过51之后直接学arm的同学都会有这感受,51当时可没有关注过什么启动代码和时钟配置,arm的设计理念完全是个跳跃,当时也好奇为什么会这样,后来去查了下才知道,arm不像51,arm公司是不制造芯片,是对arm内核授权的,具体制造是由一些半导体公司基于arm公司提供的内核根据自我需要拓展功能,因此也就有了“片内外设”这一术语,所以就需要用户自己去写代码去配置这些模块。

         好啦,那就下篇再见0.0