STM32串口 · NuttX移植
30章实战
🎯 友好色系
01
课程导学与环境准备
NuttX简介
开发环境
选型建议
Ubuntu + 交叉编译链
02
NuttX源码结构解析
源码目录树
arch/arm/stm32
Kconfig
board目录
03
STM32串口硬件基础
USART框图
时钟树
GPIO复用
中断与DMA
04
NuttX串口驱动框架
uart_register
设备结构体
驱动分层
上/下/硬件层
05
串口设备注册流程
uart_register源码
/dev/ttySx
主次设备号
06
底层硬件初始化
stm32_serial.c
up_earlyserialinit
时钟使能
GPIO
07
波特率配置与时钟分频
USART_BRR
OVER8
PCLK1/PCLK2
过采样
08
数据位/停止位/校验位
CR1/CR2/CR3
字长7/8/9
硬件流控
RTS/CTS
09
中断处理机制
中断向量表
ISR编写
接收/发送中断
错误中断
10
DMA传输模式
DMA初始化
描述符配置
循环/单次
完成回调
11
串口发送实现
uart_write
底层putc
发送缓冲区
DMA发送
12
串口接收实现
uart_read
环形缓冲区
中断/轮询
DMA接收
13
环形缓冲区设计
大小选择
读写指针
溢出处理
中断安全
14
流控与流量管理
XON/XOFF
RTS/CTS
水位线
背压机制
15
电源管理集成
PM框架
休眠唤醒
时钟门控
低功耗配置
16
调试与日志系统
syslog
串口打印
断言/错误码
逻辑分析仪
17
性能测试与优化
波特率极限
吞吐量
中断延迟
DMA vs 中断
18
多串口支持
多UART实例
设备命名
中断共享
资源竞争
19
中断嵌套与优先级
NVIC配置
抢占/子优先级
临界区
嵌套场景
20
错误处理与恢复
帧错误
噪声/溢出
断线检测
自动重试
21
串口配置接口扩展
ioctl
波特率动态调整
参数持久化
用户工具
22
与上层应用对接
read/write
select/poll
非阻塞
termios
23
测试用例编写
CMocka
功能测试
压力测试
边界条件
24
常见问题与排错
无输出
乱码
中断丢失
DMA卡死/内存泄漏
25
高级特性
9位多机
IrDA
ISO7816
LIN总线
26
板级支持包(BSP)定制
board.h
引脚复用表
时钟树
板级初始化
27
Kconfig与构建系统
菜单配置
依赖关系
条件编译
模块化
28
驱动模块化与复用
硬件/逻辑层分离
设备树
热插拔模拟
注册注销
29
实战项目
串口控制台
Modbus RTU
GPS解析
AT指令
30
课程总结与进阶
社区贡献
代码规范
学习路径
USB/CAN/Ethernet