1、STM32简介
STM32:ST是ST公司,M是微控制器Microcontroller的首字母,微控制器就是MCU,就是我们常说的单片机,32是32位单片机。STM8:8位单片机。
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。
1.1 型号
系列:主流系列STM32F103C8T6
内核:ARM Cortex-M3
主频:72MHz
RAM:20K(SRAM)
ROM:64K(Flash)
供电:2.0~3.6V(标准3.3V)
封装:LQFP48
1.2、片上资源/外设(peripheral)
1、NVIC(嵌套向量中断控制器):内核里面用于管理中断的设备,比如设置中断优先级
2、SysTick(系统滴答定时器):内核里面的一个定时器,主要用来给操作系统提供定时服务。STM32是可以加入操作系统的,比如FressRTOS、UCOS等。如果用了这些操作系统,就需要SysTick提供定时来进行任务切换的功能。本课程不需要操作系统,但是我们可以用这个定时器来完成Delay函数的功能。
3、RCC(复位和时钟控制):对系统的时钟进行配置,还有就是使能各模块的时钟。在STM32中,其他的这些外设在上电的情况下默认是没有时钟的,不给时钟的情况下,操作外设是无效的,外设也不会工作。目的:降低功耗。所以,在操作外设之前,必须要先使能它的时钟,就需要用RCC完成时钟的使能。
4、GPIO(通用IO口):可以用GPIO来点灯,读取按键等
5、AFIO(复用IO口):可以完成复用功能端口的重定义,还有中断端口的配置
5、EXTI(外部中断):配置好外部中断后,当引脚有电平变化时,就可以触发中断,让CPU来处理任务。
6、TIM(定时器):是整个STM32最常用、功能最多的外设。分为高级定时器、通用定时器、基本定时器三种类型,其中高级定时器最复杂,常用的是通用定时器。这个定时器不仅可以完成定时中断的任务,还可以完成测频率、生成PWM波形、配置成专用你的编码器接口等功能,像PWM波形,就是我们电机驱动、舵机驱动最基本的要求。
7、ADC(模数转化器):STM32内置了12位的AD转换器,可以直接读取IO口的模拟电压值,无需外部连接AD芯片,使用非常方便。
8、DMA(直接内存访问):可以帮助CPU完成搬运大量数据繁杂的任务
1.3、芯片型号解读
STM32F103C8T6
产品系列:
STM32:基于ARM核心的32位微控制器;
产品类型:
F:通用类型
产品子系列:
101:基本类型
102:USB基本型,USB 2.0全速设备
103:增强型
105或107:互联型
引脚数目
T:36引脚
C:48引脚
R:64引脚
V:100引脚
Z:144引脚
闪存存储器容量:
代表2的多少次方字节的闪存存储器
封装:
H:BGA
T:LQFP
U:VFQFPN
Y:WLCSP64
温度范围:
6:工业级温度范围,-40——85摄氏度
7:工业级温度范围,-40——105摄氏度
2、系统结构
可以分四部分记忆。
1、Cortex-M3的内核(CPU):引出三条总线,ICode指令总线、DCode数据总线、System系统总线。ICode总线和DCode主要用来连接Flash闪存的,Flash里面存储的就是我们编写的程序。ICode指令总线就是用来加载程序指令的,DCode数据总线是用来加载数据的,比如常量和调试参数。除了ICode和DCode总线,内核还引出System系统总线。System系统内总线连接其他方面的东西,比如SRAM,用于存储程序运行时的变量数据。
2、存储器:Flash、SRAM
3、总线:AHP、APB。知道总线挂载的什么即可。
4、DMA:数据搬运,减轻CPU压力
3、引脚定义
一般拿到一个新的芯片时,需要着重地看一下它的引脚定义。一般看完引脚定义,就知道怎么使用的了。
4、启动配置
1、BOOT0引脚为0,就是接地的意思;这个时候BOOT1接X,就是无论接什么。启动模式都是主闪存存储器的模式,说明主闪存存储器被选为启动区域(也就是正常的执行Flash闪存里面的程序),这个模式是最常用的模式,一般都是这种配置。
2、当BOOT1接0,BOOT0接1,接1就是接到3.3V电源正的意思。启动模式就是系统存储器,说明系统存储器被选为启动区域。这个模式就是用来做串口下载,系统存储器存的是STM32中的一段BootLoader程序,BootLoader程序的作用接收串口数据,然后刷新到主闪存中,这样就可以使用串口下载程序了。
什么时候需要用到串口下载?可以看引脚定义表,发现5个调试端口,它们既可以用来下载程序,也可以作为普通IO口使用,如果我们在程序中把这5个端口全部配置成了IO口,芯片就没有了调试端口,也下载不了程序,不要全部配置成普通IO口如果全部配置成普通IO口,下载不了程序,就需要用到串口的方式下载程序了。
3、BOOT1接1,BOOT0接1,主要用来程序调试的。
表格下面的一句话意思是:BOOT引脚的值是在上电复位后的一瞬间有效的,之后就随便了。BOOT1和PB2是在同一引脚上的,也就是上电的瞬间,是BOOT1的功能,当第4个时钟过之后,就是PB2的功能。
5、最小系统电路
1、STM32及供电:3.3V和GND之间,一般会连接一个滤波电容(保证供电电压的稳定)。在设计电路时,一般只要遇到供电,都会习惯上的加上几个滤波电容。
2、晶振电路:接了一个8MHz的主时钟晶振,STM32的主晶振一般都是8MHz,8MHz经过内部锁相环倍频,得到72MHz的主频。如果需要RTC功能,还需要再接一个32.768KHz的晶振,电路和下面一样,接在3、4引脚,OSC32就是32.768KHz晶振的意思。内部RTC电路经过2的15次方分频,就可以生成1秒的时间信号了。
3、复位电路:NRST是低电平复位的,当这个复位电路在上电的瞬间,电容是没有电的,电源通过电阻开始向电容充电,并且此时电容呈现的是短路的状态,那NRST引脚就会产生低电平。当电容逐渐充满电时,电容就相当于断路,此时NRST就会被R1上拉为高电平。上电瞬间的波形就是先低电平,然后逐渐高电平,低电平就可以提供STM32的上电复位信号。
手动复位的功能,当按下按键时,电容被放电,并且NRST引脚也通过按键被直接接地了,相当于手动产生了低电平复位信号,按键松手后,NRST又回归高电平,此时单片机就从复位状态转化为工作状态。
4、下载电路:
5、启动配置: