时钟51单片机所有的时间基准都是以唯一的晶振为主。STM32每个引脚使用都需要开启相应的时钟功能。以控制外设时钟的APB2 外设时钟使能寄存器(RCC_APB2ENR)为例介绍:
STM32诞生的背景51 是嵌入式学习中一款入门级的精典 MCU,因其结构简单,易于教学,且可以通过串口编程而不需要额外的仿真器,所以在教学时被大量采用,至今很多大学在嵌入式教学中用的还是 51。51 诞生于 70 年代,属于传统的 8 位单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现在的市场产品竞争越来越激烈,对成本极其敏感,相应地对 MCU的 性能要求也更苛刻:更多功能,更低功耗,易用界面和多任务。面对这些要求,51 现有的 资源就显得得抓襟见肘。所以无论是高校教学还是市场需求,都急需一款新的 MCU 来为这个领域注入新的活力。基于这样的市场需求, ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3微控制器内核。紧随其后,ST(意法半导体)公司就推出了基于 Cortex-M3 内核的 MCU—STM32。目前Arduino 和树莓派发展迅速,但都没有成为主流,而STM32 凭借其产品线的多样化、极高的性价比、简单易用的库开发方 式,迅速在众多 Cortex-M3 MCU 中脱颖而出,成为最闪亮的一颗新星。STM32 能做什么每个单片机都有其独特的优势,所有其使用方向也大体不同。STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。下面我们以最近最为火爆的两个产品来讲解下,一个是手环,一个是飞行器。
STM32选型STM32分类STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。单纯从学习的角度出发,可以选择F1和F4,F1代表了基础型,基于Cortex-M3内核,主频为 72MHZ,F4 代表了高性能,基于 Cortex-M4 内核,主频 180M。之于 F1,F4(429 系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了 LCD 控制器和摄像头接口,支持 SDRAM,这个区别在项目选型上会被优先考虑。但是从大学教学和用户初学来说,还是首选 F1 系列,目前在市场上资料最多,产品占有量最多的就是 F1 系列的 STM32。
选择合适的MCU了解了 STM32 的分类和命名方法之后,就可以根据项目的具体需求先大概选择哪类内核的 MCU,普通应用,不需要接大屏幕的一般选择 Cortex-M3 内核的 F1 系列,如果要追求高性能,需要大量的数据运算,且需要外接 RGB大屏幕的则选择 Cortex-M4内核的 F429系列。明确了大方向之后,接下来就是细分选型,先确定引脚,引脚多的功能就多,价格也贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选择 FLASH 大小,相同引脚数的 MCU 会有不同的 FLASH 大小可供选择,这个也是根据实际需要选择,程序大的就选择大点的 FLASH。如何分配原理图 IO在画原理图之前,一般的做法是先把引脚分类好,然后才开始画原理图。引脚分类1. 电源(VBAT)、(VDD VSS)、(VDDA VSSA)、(VREF+ VREF-)等2. 晶振IO 主晶振 IO,RTC晶振 IO3. 下载 IO用于 JTAG 下载的 IO:JTMS、JTCK、JTDI、JTDO、NJTRST4. BOOT IOBOOT0、BOOT1,用于设置系统的启动方式5. 复位 IONRST,用于外部复位上面 5 部分 IO 组成的系统我们也叫做最小系统6. GPIO专用器件接到专用的总线,比如 I2C,SPI,SDIO,FSMC,DCMI 这些总线的器件需要接到专用的 IO。普通的元器件接到 GPIO,比如蜂鸣器,LED,按键等元器件用普通的GPIO即如果还有剩下的 IO,可根据项目需要引出或者不引出。如何寻找 IO的功能说明要想根据功能来分配 IO,那就得先知道每个 IO 的功能说明,这个我们可以从官方的数据手册里面找到。在学习的时候,有两个官方资料我们会经常用到,一个是参考手册(英文叫 Reference manual),另外一个是数据手册(英文叫 Data Sheet)。