嵌入式硬件/软件工程师、电子工程相关专业学生、需要掌握STM32开发技能的研发人员。
掌握STM32微控制器的体系结构与核心外设功能。
熟练使用标准库/HAL库进行STM32应用程序开发。
能够独立完成基于STM32的完整项目(GPIO、定时器、串口、ADC、中断、I2C/SPI)。
STM32系列概述:STM32的产品线分类(F0、F1、F4、H7、L系列);STM32F103系列的系统架构(Cortex-M3内核、总线矩阵、DMA);选型依据(性能、外设、功耗、成本);封装与引脚定义。
开发环境搭建:集成开发环境的选择(Keil MDK、IAR EWARM、STM32CubeIDE);调试器(ST-Link、J-Link)的安装与使用;固件库的获取与工程模板建立;程序的下载与调试。
GPIO编程:GPIO的硬件结构(推挽输出、开漏输出、浮空输入、上拉/下拉输入);GPIO的寄存器操作(CRL、CRH、IDR、ODR、BSRR、BRR);HAL库GPIO函数(HAL_GPIO_WritePin、HAL_GPIO_ReadPin、HAL_GPIO_TogglePin);LED控制与按键检测实现。
时钟系统:STM32的时钟树(HSI、HSE、PLL、SYSCLK、AHB/APB分频);时钟配置函数(HAL_RCC_OscConfig、HAL_RCC_ClockConfig);系统时钟的初始化;各外设时钟的使能;时钟输出(MCO)的使用。
中断系统:NVIC(嵌套向量中断控制器)的工作原理;中断优先级分组(抢占优先级、响应优先级);外部中断(EXTI)的配置;中断服务函数的编写规范;中断处理流程与注意事项。
定时器应用:STM32定时器分类(基本定时器、通用定时器、高级定时器);定时器的时基单元配置(预分频器、自动重载寄存器);定时中断的实现;PWM输出(频率、占空比控制);输入捕获(频率测量、脉宽测量);编码器接口模式。
串行通信:UART:USART的硬件连接与配置(波特率、数据位、停止位、校验位);轮询方式的数据收发;中断方式的数据收发;DMA方式的数据收发;printf函数的重定向实现。
串行通信:I2C:I2C总线的物理层与协议层;STM32的I2C硬件特性;I2C的主模式发送/接收;与EEPROM(24Cxx)的通信实现;HAL库I2C函数的使用。
串行通信:SPI:SPI总线的四种工作模式(CPOL、CPHA);STM32的SPI硬件特性;SPI的主模式通信;与Flash芯片(W25Qxx)的通信实现;SPI的DMA传输。
模拟外设:ADC:逐次逼近型ADC的工作原理;STM32的ADC特性(分辨率、采样时间、注入组、规则组);ADC的单次转换与连续转换;ADC的DMA传输;内部温度传感器与参考电压的读取。
DMA控制器:DMA(直接存储器访问)的工作原理;STM32的DMA控制器结构;DMA的配置(传输方向、数据宽度、循环模式、增量模式);外设到内存、内存到外设、内存到内存的DMA传输。
综合实战项目:典型STM32应用系统(如智能小车控制器、温湿度监测终端、波形发生器)的完整开发流程,包含硬件设计、外设驱动编写、多任务调度(裸机/RTOS)、系统调试与功能验证。