stm32综述
大概有一段时间没看stm32,通过之前学51的经历,大概是明白自己一段时间不看就会忘,虽然随便翻翻又能快速上手,但是东找西翻比较麻烦。所以打算复习的时候,顺便做个笔记记录一下。自己所用的型号为STM32F103C8T6。
STM简述
STM32是ST公司基于ARM- Cortex-M内核开发的32位微控制器(MCU)。自己所用的是STM32F1系列,属于Mainstream,内核Cortex-M3。ARM公司设计ARM内核,半导体厂商完善内核周边电路并产生芯片。

图中的ARM由ARM公司设计,芯片内的存储和外设(比如GPIO,定时器)由ST公司设计。

这是一枚STM32F103C8T6的芯片,由芯片可以看出型号和封装。封装为LQFP48,芯片表面左下角有个圆点,圆点下的引脚为1顺着原点逆时针开始数。如果芯片有两个圆点,则从最小的圆点开始数。
片上资源/外设

绿色背景加黑的是位于内核的外设。另外C8T6并没有表中的DAC,SDIO,FSMC和USB OTG外设。
NVIC:内核里面用于管理中断的设备,例如配置中断优先级。
SysTick:用来给操作系统提供定时服务。应为STM32可以加入Freektos,ucos等操作系统,利用SysTick提供定时进行任务切换的功能。
RCC:复位和时钟控制,可以对系统的时钟进行配置,还能使能各模块的时钟。在STM32中,外设上电后是默认没有时钟。没有时钟,外设无法工作。
GPIO:通用的IO口,可以用于操控模块,比如灯,马达等。
AFIO:完成复用功能端口的重定义,还有中断端口的置配。
EXTI:配置好外部中断后,当引脚有电平变化时,就可以触发中断,让CPU来处理任务。
TIM定时器:分为基本定时器,通用定时器,高级定时器。不仅可以完成定时中断的任务,还可以用于测频率,生成PWM波形,配置为专用的编码器接口。
ADC:模数转换器,STM32内置了12位的AD转换器,可以直接读取IO口的模拟电压,无需外置。
DMA:直接内存访问,可以帮助CPU搬运大量数据等这种繁杂任务。
I2C/SPI:两种常见的通信协议。
RTC:实时时钟,在STM32内部完成时,分,秒的计时功能,还可以外接电源,即使掉电也能
正常运行(此时会启用芯片备用电池)。
CRC:一种数据校验方式,用于判断接受的数据是否正确。
IWDG/WWDG:当单片机因为电磁干扰死机或者程序设计不合理导致的死循环时,看门狗可以及时复位,保证系统稳定。
DAC:数模转换器,可以在IO口直接输出模拟电压。
OTG:使STM32作为USB主机去读取其它USB设备。


系统结构

ICode(指令总线)和Dcode(数据总线)用来连接Flash闪存,Flash存放的是我们编写的程序,ICode用于加载程序指令,Dcode用于加载数据,如常数和调试数据。
系统总线就连接到如SRAM(用于存储程序运行时的变量数据)
AHB系统总线:用于挂载主要的外设,AHB指先进高性能总线,挂载最基本的或者性能比较高的外设,如复位和时钟控制 SDIO。
APB:先进外设总线,用于连接一般的外设。
DMA:大量的数据搬运,防止覆盖。
引脚定义
红色是电源相关的引脚
蓝色是最小系统相关的引脚
绿色是IO口/功能口相关的引脚
S代表电源,I/O代表输入输出,I/O电平代表所能容忍的电压。FT代表能容忍5V,默认复用是IO口上同时连接的外设功能引脚。重定义:如果有2个功能同时复用在了1个IO口上,可以把其中一个复用功能重映射到其他端口上。

1. VBAT:备用电池供电引脚,当系统电源断电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源。
2. IO口/侵入检测/RTC:IO口可以根据程序输出读取高低电平
3.4 IO口/接32.768kHZ的RTC晶振
5,6 接系统的主晶振,芯片内有锁相环电路,对8MHZ进行倍频形成72MHZ。
7 系统复位引脚,N代表低电平复位
8,9 内部模拟部分的电源,如ADC,RC振荡器 VSS(-) VDD(+)
10-19 都是IO口,10号引脚还兼具了WKUP用于唤醒对于待机模式的STM32
20 IO口/BOOT1引脚,BOOT用来配置启动模式 44. BOOT0
21.22.25-33.41-43.45.46 都是IO口
23,24是系统的主电源口, 35.36.47.48 STM32采用分区供电模式
34,37-40 IO口/调试端口 STM32支持SWD和JTAG两种调试方法
启动配置(BOOT0和BOOT1)

作用:指定程序开始运行的位置,一般情况下,程序是在Flash程序存储器开始执行
接1指3.3V电源正的意思
系统存储器就是STM32中的一段BootLoader(接受串口数据,然后刷新到主闪存中)
核心板原理图
