1、STM32F0系列Cortex-M0原理与实践011 低成本单片机世界的入侵者Cortex-M01 1 低成本单片机世界的入侵者低成本单片机世界的入侵者Cortex-M0Cortex-M01.1 相比8位(16位)机为何要选择Cortex-M01.3 编程模型1.5 异常模型1.2 如何从8位机过渡到Cortex-M01.4 存储器模型1.6 电源管理1 1 低成本单片机世界的入侵者低成本单片机世界的入侵者Cortex-M0Cortex-M01.7 指令集1.8 Cortex-M0内核外设1.9 STM32F0系列1.10 小结1 1 低成本单片机世界的入侵者低成本单片机世界的入侵者Corte
2、x-M0Cortex-M01.1 相比8位(16位)机为何要选择Cortex-M0CBA1.1.1 性能对比1.1.2 8位和16位体系结构的缺点1.1.3 Cortex的软件移植性1 1 低成本单片机世界的入侵者低成本单片机世界的入侵者Cortex-M0Cortex-M01.3 编程模型1.3.1 处理器的模式1.3.2 堆栈1.3.3 内核寄存器1.4 存储器模型1 1 低成本单片机世界的入侵者低成本单片机世界的入侵者Cortex-M0Cortex-M01 11.4.1 1.4.1 存储区、类型和属存储区、类型和属性性2 21.4.2 1.4.2 存储器系统的存储器存储器系统的存储器访问次
3、序访问次序3 31.4.3 1.4.3 存储器访问的行为存储器访问的行为4 41.4.4 1.4.4 软件的存储器访问顺软件的存储器访问顺序序022 开发软件准备2 2 开发软件准备开发软件准备2.1 MDK-ARM2.1 MDK-ARM开发环境开发环境2.1.1 Vision4 IDE概述2.1.2 编译、调试现有MDK工程2.1.3 创建一个Keil新项目2.4 2.4 小结小结 2.2 2.2 仿真器仿真器2.2.1 ST-Link2.2.2 J-Link与U-Link22.3 WinMerge2.3 WinMerge 033 硬件基础3 3 硬件基础硬件基础3.2 系统及存储器概述3.
4、4 复位和时钟控制(RCC)3.6 硬件设计3.1 STM32F0产品特征3.3 电源控制(PWR)3.5 RCC固件库3 3 硬件基础硬件基础3.7 小结3 3 硬件基础硬件基础3.2 系统及存储器概述3.2.2 存储器组织1 13 32 23.2.1 系统构架3.2.3 启动配置3 3 硬件基础硬件基础3.3 电源控制(PWR)3.3.1 3.3.1 电电源源3.3.2 3.3.2 电电源管理器源管理器3.3.4 3.3.4 PWRPWR固件固件库库3.3.3 3.3.3 低低功耗模式功耗模式3 3 硬件基础硬件基础3.4 复位和时钟控制(RCC)01013.4.1 复位3.4.2 时钟0
5、2023.4.3 低功耗模式0303044 STM32F0的固件库4 STM32F04 STM32F0的固件库的固件库4.1 ARM的C语言4.2 CMSIS4.3 STM32F0 xx标准外设库4.4 小结CAB4.1 ARM的C语言4 STM32F04 STM32F0的固件库的固件库4.1.2 寄存器访问方式总结4.1.4 使用volatile4.1.6 软件结构4.1.1 嵌入式C语言的几个特殊之处4.1.3 struct字节对齐4.1.5 RAM中运行程序4 STM32F04 STM32F0的固件的固件库库4.2 CMSIS4.2.1 CMSIS主要构成4.2.2 使用CMSIS4.3
6、 STM32F0 xx标准外设库4 STM32F04 STM32F0的固件库的固件库4.3.2 STM32F0 xx外设驱动文件说明4.3.4 库文件夹说明4.3.6 MDK ARM中使用固件库实例4.3.1 标准外设库概述4.3.3 STM32F0 xx的CMSIS文件说明4.3.5 固件库文件055 通用I/O(GPIO)5 5 通用通用I/OI/O(GPIOGPIO)5.1 GPIO引脚与功能5.2 GPIO固件库5.3 GPIO应用实例5.4 小结5.1 GPIO引脚与功能5 5 通用通用I/OI/O(GPIOGPIO)5.1.2 GPIO功能描述5.1.4 I/O引脚的复用功能和重映
7、射5.1.6 输入配置5.1.1 引脚描述5.1.3 通用I/O(GPIO)5.1.5 外部中断/唤醒线5.1 GPIO引脚与功能5 5 通用通用I/OI/O(GPIOGPIO)5.1.8 复用功能配置5.1.10 HSE或LSE引脚用作GPIO5.1.12 GPIO复用功能寄存器5.1.7 输出配置5.1.9 模拟配置5.1.11 备份域供电下GPIO引脚的使用066 中断和事件6 6 中断和事件中断和事件AEDBC6.2 中断和异常向量6.3 扩展中断和事件控制器(EXTI)6.5 EXTI中断实例6.4 EXTI固件库6.1 嵌套向量中断控制器(NVIC)6 6 中断和事件中断和事件6.
8、7 小结6 6 中断和事件中断和事件6.1 嵌套向量中断控制器(NVIC)6.1.1 NVIC概述6.1.2 电平中断和脉冲中断6 6 中断和事件中断和事件6.3 扩展中断和事件控制器(EXTI)20196.3.1 框图0120206.3.2 事件管理0220216.3.3 功能说明0320226.3.4 外部和内部中断/事件线映像04077 通用同步异步收发器(USART)7 7 通用同步异步收发器(通用同步异步收发器(USARTUSART)AEDBC7.2 STM32F0 x的USART功能实现7.3 USART功能描述7.5 USART固件库函数7.4 USART中断7.1 USART主
9、要功能7 7 通用同步异步收发器(通用同步异步收发器(USARTUSART)7.7 接收不定长数据实例7.8 小结7.3 USART功能描述7 7 通用同步异步收发器(通用同步异步收发器(USARTUSART)7.3.1 USART框图7.3.2 USART字符描述7.3.3 发送器7.3.6 Modbus通信7.3.5 多机通信7.3.4 接收器7.3 USART功能描述7 7 通用同步异步收发器(通用同步异步收发器(USARTUSART)ABC7.3.8 USART同步模式7.3.9 单线半双工通信7.3.10 RS-232硬件流控制和RS-485驱动使能7.3.7 LIN(本地互联网络)
10、模式088 实时时钟(RTC)8 8 实时时钟(实时时钟(RTCRTC)8.1 主要特性8.2 STM32F0的RTC功能实现8.3 功能描述8.6 固件库8.5 RTC中断8.4 RTC低功耗模式8 8 实时时钟(实时时钟(RTCRTC)8.8 小结02028.7 闹钟报警实例01018.3 功能描述8 8 实时时钟(实时时钟(RTCRTC)8.3.1 RTC框图8.3.2 被RTC控制的GPIO8.3.3 时钟和预分频器8.3.6 RTC初始化及配置8.3.5 可编程报警8.3.4 实时时钟和日历8.3 功能描述8 8 实时时钟(实时时钟(RTCRTC)8.3.7 读日历寄存器8.3.8
11、复位过程8.3.9 RTC同步8.3.12 时间戳功能8.3.11 RTC平滑数字校准8.3.10 RTC参考时钟检测8 8 实时时钟(实时时钟(RTCRTC)8.3 功能描述8.3.14 校准时钟输出1 13 32 28.3.13 侵入检测8.3.15 报警输出099 看门狗9 9 看门狗看门狗9.1 STM32F0看门狗概述9.2 独立看门狗(IWDG)9.3 窗口看门狗(WWDG)9.4 固件库9.5 看门狗实例 9.4.1 I W D G A P I9.4.2 W W D G 固件 库1010 定时器10 10 定时器定时器10.1 STM32F0定时器实现10.2 功能描述10.5
12、小结10.4 SPWM实例10.3 固件库LOGOLOGOhttps:/10 10 定时定时器器10.2 功能描述10.2.1 10.2.1 时时基单元基单元010110.2.2 10.2.2 计计数器数器020210.2.6 10.2.6 强强制输出模式制输出模式060610.2.5 10.2.5 输输入捕获模式入捕获模式050510.2 功能描述10 10 定时器定时器10.2.8 PWM模式10.2.10 使用刹车功能10.2.12 编码器接口模式10.2.7 输出比较模式10.2.9 互补输出和死区插入10.2.11 产生六步PWM输出1111 模数转换器(ADC)11 11 模数转换
13、器(模数转换器(ADCADC)11.1 ADC主要特性11.2 ADC功能描述11.3 外部触发和触发极性11.4 数据管理11.5 低功耗特性11.6 ADC中断11 11 模数转换器(模数转换器(ADCADC)11.8 STM32F05x(07x)的DAC与比较器11.10 小结11.7 ADC固件库11.9 USB电压监测11 11 模数转换器(模数转换器(ADCADC)11.2 ADC功能描述11.2.11.2.1 1 校准校准11.2.2 11.2.2 ADCADC开关开关控制控制11.2.3 11.2.3 ADCADC时时钟钟11.2.4 11.2.4 ADCADC配配置置11.2
14、.5 11.2.5 通道选择通道选择11.2.6 11.2.6 转换模式转换模式11 11 模数转换器模数转换器(ADCADC)11.2 ADC功能描述11.2.7 启动与停止转换1212 DMA控制12 DMA12 DMA控制控制1 2.1 D M A1 2.1 D M A 主 要主 要特 性特 性1 2.2 D M A1 2.2 D M A 功 能功 能描 述描 述1 2.3 1 2.3 固 件 库固 件 库1 2.4 1 2.4 基 于基 于 D M AD M A的的 A D CA D C 采 样采 样 12.2.1 DMA原理12.2.2 可编程的数据宽度、数据对齐方式和数据大小端12
15、.2.3 错误管理12.2.4 中断12.2.5 DMA请求映射 1313 串行外设接口/I2S音频(SPI/I2S)13 13 串行外设接口串行外设接口/I2S/I2S音频(音频(SPI/I2SSPI/I2S)13.1 简介13.2 SPI功能描述13.3 SPI中断13.6 小结13.5 SPI相互通信实例13.4 SPI固件库13 13 串行外设接口串行外设接口/I2S/I2S音频(音频(SPI/I2SSPI/I2S)13.1 简介A13.1.1 SPI主要特点13.1.2 SPI/I2S具体功能实现B13.2 SPI功能描述13 13 串行外设接口串行外设接口/I2S/I2S音频(音频
16、(SPI/I2SSPI/I2S)13.2.6 SPI的初始化13.2.5 通信格式13.2.4 从机选择(NSS)的引脚管理13.2.3 多从机通信13.2.2 一主、一从通信13.2.1 SPI框图13 13 串行外设接口串行外设接口/I2S/I2S音频(音频(SPI/I2SSPI/I2S)13.2 SPI功能描述13.2.7 数据发送和接收流程010113.2.8 状态标志020213.2.9 错误标志03031414 2C接口14 2C14 2C接口接口14.1 I2C的主要特点14.2 I2C功能描述14.3 I2C中断14.6 小结14.5 读/写24C02实例14.4 I2C固件库
17、14 2C14 2C接口接口14.2 I2C功能描述14.2.1 14.2.1 I2C1I2C1框图框图14.2.2 14.2.2 I2CI2C模模式式14.2.3 14.2.3 I2CI2C的初的初始化始化14.2.4 14.2.4 数据收发数据收发14.2.5 14.2.5 I2CI2C从机从机模式模式14.2.6 14.2.6 I2CI2C主模主模式式1515 控制器局域网bxCAN15 15 控制器局域网控制器局域网bxCANbxCAN15.1 bxCAN概述15.2 bxCAN工作模式15.3 bxCAN功能描述15.4 bxCAN中断15.5 bxCAN固件库15.6 CAN通信实
18、例15 15 控制器局域控制器局域网网bxCANbxCAN15.7 小结15 15 控制器局域网控制器局域网bxCANbxCAN15.2 bxCAN工作模式15.2.1 初始化模式010115.2.2 正常模式020215.2.3 睡眠模式(低功耗)030315.2.4 测试模式040415.2.5 静默模式050515.2.6 环回模式060615 15 控制器局域网控制器局域网bxCANbxCAN15.2 bxCAN工作模式15.2.7 环回静默模式15.3 bxCAN功能描述15 15 控制器局域网控制器局域网bxCANbxCAN15.3.1 发送15.3.2 时间触发通信模式15.3.
19、3 接收管理15.3.6 错误管理15.3.5 报文存储15.3.4 标识符过滤15.3 bxCAN功能描述u15.3.7 位时间特性15 15 控制器局域网控制器局域网bxCANbxCAN1616 RTX实时操作系统应用16 RTX16 RTX实时操作系统应用实时操作系统应用16.1 16.1 RTXRTX概概述述16.1.1 RTX任务16.1.2 RTX调度16.2 16.2 任务任务通信通信16.2.1 事件标志16.2.2 互斥量16.2.3 信箱16.3 16.3 RTXRTX基基础配置础配置 1 6.4 1 6.4 中 断 任中 断 任务 之 间务 之 间的 通 信的 通 信实 例实 例 1717 USB电源监测17 USB17 USB电源监测电源监测010117.1 需求分析17.2 硬件设计020217.3 软件设计030317.4 小结0404感谢聆听