参考引用
- STM32 入门教程-江科协
1. STM32 简介
1.1 STM32 套件介绍
1.2 STM32 简介
- STM32 是 ST 公司基于 ARM Cortex-M 内核开发的 32 位微控制器
- 应用:嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等
1.3 ARM 介绍
- ARM 既指 ARM 公司,也指 ARM 处理器内核
- ARM 公司是全球领先的半导体知识产权(IP)提供商,全世界超过 95% 的智能手机和平板电脑都采用 ARM 架构
- ARM 公司设计 ARM 内核,半导体厂商完善内核周边电路并生产芯片
1.4 STM32F103C8T6
- 核心参数
- 系列:主流系列STM32F1
- 内核:ARM Cortex-M3
- 主频:72MHz
- RAM:20K(运行内存,存储介质为 SRAM)
- ROM:64K(程序存储器,存储介质为 Flash 闪存)
- 供电:2.0~3.6V
- 标准 3.3V,常用 USB 供电电压为 5V,不能直接给 STM32 供电,需要加一个稳压芯片降到 3.3V 再供电
- 封装:LQFP48
1.5 片上资源/外设(Peripheral)
- 主要学习的内容就是 STM 的外设,通过程序配置外设,来完成想要的功能
- NVIC 和 SysTick 是位于 Cortex-M3 内核里面的外设,其余都是内核外的外设
- NVIC:内核里面用于管理中断的设备
- 比如配置中断优先级
- SysTick:用来给操作系统提供定时服务
- 该 STM32 可加入 FreeRTOS 操作系统,如果要使用操作系统,就需 SysTick 提供定时来进行任务切换
- 还可用来完成 Delay 函数功能
- RCC:对系统的时钟进行配置,使能各模块的时钟
- 在 STM32 中,其它的这些外设在上电的的情况下默认是没有时钟的,不给时钟的情况下操作外设是无效的,这样设计的目的是降低功耗,所以操作外设之前必须先使能它的时钟
- GPIO:通用 IO 口,用来点灯,读取按键等
- AFIO:可以完成复用功能端口的重定义,还有中断端口的配置
- EXIT:配置好外部中断后,当引脚有电平变化时,就可以触发中断,让CPU来处理任务
- TIM:STM32 中最常用、功能最多的外设
- 分为高级定时器、通用定时器、基本定时器三种类型
- 通用定时器最常用,可以完成测频率、生成 PWM 波形、配置成专用的编码器接口等功能
- ADC:该 STM32 内置了 12 位的 AD 转换器
- 可以直接读取 IO 口的模拟电压值,无需外部连接 AD 芯片
- DMA:帮助 CPU 完成搬运大量数据等这样的繁杂任务
- USART:平常用的 UART 更多是异步串口
- I2C 和 SPI:常用的通信协议
- STM32 内置了它们的控制器,可以用硬件来输出时序波形,也可用通用 IO 口来模拟时序波形
- CAN:通常用于汽车领域的通信协议
- USB:利用这个 STM32 的 USB 外设可以做一个模拟鼠标、模拟 U 盘的设备
- RTC:在 STM32 内部完成年、月、时分秒的计时功能
- 还可接外部备用电池,即使掉电也能正常运行
- CRC:一种数据的校验方式,用于判断数据的正确性
- PWR:让芯片进入睡眠模式等状态,来达到省电的目的
- BKP:这是一段存储器,当系统掉电时,仍可由备用电池保持数据
- IWDG 和 WWDG:当单片机因为电磁干扰死机或程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定
- DAC:可以在 IO 口直接输出模拟电压
- SDIO:用来读取 SD 卡
- FSMC:用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作
- USB OTG:用 OTG 功能,可以让 STM32 作为 USB 主机去读取其他 USB 设备
1.6 芯片命名规则
1.7 系统结构
- ICode 指令总线、DCode 数据总线、System 系统总线
- ICode:指令总线用来加载程序指令
- DCode:数据总线用于加载数据
- AHB:系统总线用于挂载主要的外设,AHB 意思是先进高性能总线
- APB:先进外设总线,用于连接一般的外设
- DMA:辅助内核 CPU 处理一些简单且重复性高的事项,比如负责一些大量数据搬运的处理,通过 DMA 总线连接到总线矩阵上,拥有和 CPU 一样的总线控制权,用于访问外设
1.8 引脚定义
1.8.1 选项解释
- 类型
- S 代表电源,I 代表输入,O 代表输出,I/O 代表输入输出
- I/O 口电平
- 代表 I/O 口所能容忍的电压
- FT 代表能容忍 5V 的电压
- 无 FT 则只能容忍 3.3V 的电压,若想解 5V 电平则需加装电平转换电路
- 主功能
- 上电后默认的功能,一般和引脚名称相同
- 如果和引脚名称不相同,则引脚的实际功能以主功能为准
- 默认复用功能
- I/O 口上同时连接的外设功能引脚
- 配置 I/O 口时可选择是通用 I/O 口还是复用功能
- 重定义功能
- 作用:如果有两个功能同时复用在一个 I/O 口上,则可把其中一个复用功能重映射到其他端口上
1.8.2 引脚解析
- 1、VBRT
- 备用电池供电的引脚,可以接一个 3V 的电池,当系统电源断电时,备用电池可以给内部的 RTC 时钟和备份寄存器供电
- 2、I/O 口或侵入检测或 RTC
- I/O 口可以根据程序输出或读取高低电平
- 侵入检测用于安全保障,比如:可以在产品外壳加装防拆触点,然后接上电路到该引脚上,若有人强行拆开设备导致触点断开,则这个引脚的电平变化就会触发 STM32 的侵入信号,从而清空数据保证安全
- RTC 的引脚可以用来输出 RTC 校准时钟、RTC 闹钟脉冲或者秒脉冲
- 3、4 号引脚
- I/O 口或者接 32.768KHz 的 RTC 晶振
- 5、6 号引脚
- 接系统的主晶振,一般是 8MHz,芯片内部有锁相环电路,可以对这个 8MHz 的频率进行倍频得到 72MHz 的主频,作为系统主时钟
- 7、NRST
- 系统复位引脚,N 代表它是低电平复位
- 8、9号引脚
- 内部模拟部分的电源,比如 ADC、RC 震荡器等
- VSS 是负极,接 GND,VDD 是正极,接 3.3V
- 10-19 号引脚,21-22 号引脚
- 都是 I/O 口,PA0 可以用于唤醒处于待机模式的 STM32
- 20、PB2
- I/O 口或者 BOOT1 引脚
- BOOT 引脚是用来配置启动模式的
- 23、24号的 VSS_1 和 VDD_1 是系统的主电源口
- 另外,下面的 VSS_2、VDD_2、VSS_3、VDD_3 都是系统的主电源口
- VSS 是负极,接 GND,VDD 是正极,接 3.3V
- STM32 内部采用了分区供电的方式
- 25-33 号引脚都是 I/O 口
- 34-40 号引脚
- I/O 口或者调试端口,用于调试程序与下载程序(尽量不要把这几个都变成 I/O 口,因为这样就没有用于调试的端口了,只能通过设置启动配置 0 + 1 用于串口下载)
- 该 STM32 支持 SWD 和 JTAG 两种调试方式
- SWD 需要 2 根线,分别是 SWDIO 和 SWCLK
- JTAG 需要 5 根线,分别是 JTMS、JTCK、JTDI、JTDO、NJTRST
本文使用 STLINK 来下载调试程序,STLINK 用的是 SWD 的方式,只需占用 PA13 和 PA14 两个 I/O 口
- 41-43 和 45-46 号引脚都是 I/O 口
- 44号 BOOT0,和前面的 BOOT1 一样,也是用来做启动配置的
1.9 启动配置
- 启动配置的作用就是指定程序开始运行的位置
- 一般情况下,程序都是在 Flash 程序存储器开始执行,但是在某些情况下,也可以让程序在别的地方开始执行,用以完成特殊功能
- 下图中 X 代表任何接口,0 表示接地,1 表示接 3.3V 电源正极
- X + 0 最常用的模式
- 0 + 1 用于串口下载使用
- 系统存储器中储存的就是 STM32 中的一段 BootLoader 程序
- BootLoader 程序的作用就是接收串口数据,然后刷新到主闪存中
- 1 + 1 用来进行程序调试
1.10 最小系统电路
2. 软件安装
- 资料下载
- 软件安装