一、LL库与寄存器(进阶)
MCU开发的精髓只能是学会用寄存器开发MCU程序。一定要掌握本质,所谓本质就是“寄存器”。 只会用HAL库,不会寄存器,只能算是入门。别扯寄存器开发周期长什么的,移植会很困难。在高手面前,这些都不是问题。在高手看来,怎样提高效率与减少空间才值得琢磨。
STM32 - 在机器人、自动化控制领域,LL库相比HAL优势明显
STM32F103_LL库+寄存器学习笔记01 - 梳理CubeMX生成的LL库最小的裸机系统框架
STM32F103_LL库+寄存器学习笔记02 - 开启SysTick(滴答定时器)中断
GPIO专题
STM32F103_LL库+寄存器学习笔记03 - GPIO设置输入模式,并轮询GPIO的电平状态
STM32F103_LL库+寄存器学习笔记04 - GPIO设置输出模式
STM32F103_LL库+寄存器学习笔记05 - GPIO输入模式,捕获上升沿(或下降沿)进入中断回调
串口通讯专题
- 笔记06~07是串口通讯入门。
- 笔记08~09是串口通讯进阶,使用DMA辅助数据的收发,MCU被解放出来。
- 笔记10~11是串口通讯的最终解决方案,实战项目推荐使用。
- 笔记12是提高串口通讯的健壮性,实战项目一定要监控错误。
STM32F103_LL库+寄存器学习笔记06 - 梳理串口与串行发送“Hello,World“
STM32F103_LL库+寄存器学习笔记07 - 串口接收缓冲区非空中断
STM32F103_LL库+寄存器学习笔记08 - DMA串口发送,开启DMA传输完成中断
STM32F103_LL库+寄存器学习笔记09 - DMA串口接收与DMA串口发送,串口接收空闲中断
STM32F103_LL库+寄存器学习笔记10 - DMA传输过半+DMA传输完成中断实现DMA串口接收“双缓冲“
STM32F103_LL库+寄存器学习笔记11 - 串口收发的中断优先级梳理
STM32F103_LL库+寄存器学习笔记12 - 提高串口通讯程序的健壮性:异常监控 + 超时保护机制
CAN通讯专题
- CubeMX不支持生成CAN外设的LL库代码,所以改用HAL库+寄存器方式来学习。
- 笔记20是CAN驱动的最终解决方案,发送与接收都使用ringbuffer实现二级缓存。
- 笔记21是CAN从站必须掌握的关键知识点-CAN接收过滤器。
STM32F103_HAL库+寄存器学习笔记13 - 梳理外设CAN与如何发送CAN报文(串行发送)
STM32F103_HAL库+寄存器学习笔记14 - CAN发送完成中断
STM32F103_HAL库+寄存器学习笔记15 - 梳理CAN发送失败时,涉及哪些寄存器
STM32F103_HAL库+寄存器学习笔记16 - 监控CAN发送失败(轮询方式)
STM32F103_HAL库+寄存器学习笔记17 - CAN中断接收 + 接收CAN总线所有报文
STM32F103_HAL库+寄存器学习笔记18 - CAN接收溢出中断
STM32F103_HAL库+寄存器学习笔记19 - CAN发送中断+CAN接收中断+接收所有CAN报文+ringbuffer数据结构
STM32F103_HAL库+寄存器学习笔记20 - CAN发送中断+ringbuffer + CAN空闲接收中断+接收所有CAN报文+ringbuffer
STM32F103_HAL库+寄存器学习笔记21 - CAN接收过滤器:CPU减负神器,提升系统效率的第一道防线
二、HAL库(初级)
串口
STM32H743 + CubeMX - 串口重定向printf
STM32H743 + CubeMX - 串口非空闲中断接收
TIM
STM32H743 + CubeMX - 定时器TIM输出PWM(Output Compare模式)
STM32H743 + CubeMX - 定时器TIM输出PWM(PWM Generation模式)
STM32H743 + CubeMX - 低功耗定时器LPTIM输出PWM波
STM32H743 + CubeMX - 定时器TIM输出PWM(PWM Generation模式)+ 中断
STM32H743 + CubeMX - 定时器TIM输出PWM(Out Compare模式) + 中断
STM32H743 + CubeMX - 定时器TIM发送非对称PWM(使用一个通道)
STM32H743 + CubeMX - TIM1发送PWM脉冲,TIM2计算PWM脉冲的总数(定时器同步计数实现)
STM32F407 + CubeMX - 使用TIM产生PWM信号
STM32F407 + CubeMX - 使用TIM计算编码器的脉冲总数,并计算脉冲方向
STM32F405 + CubeMX - 产生互补PWM波,中心对齐模式1 + PWM模式2(FOC专用)
SPI
STM32H743 + CubeMX - QSPI读写外部FLASH(W25Q128JVSQ)
STM32H743 + CubeMX - QSPI+DMA读取外部FLASH(W25Q128JVSQ)
STM32H743 + CubeMX - SPI与DRV8889串行通讯,驱动步进电机
FDCAN
STM32H743 + CubeMX - 学习FDCAN控制器上的TxFIFO
STM32H743 + CubeMX - 计算FDCAN2上的MessageRAMOffset(使两路FDCAN正常工作)
STM32H743 + CubeMX - 解决FDCAN控制器无法接收远程帧
STM32H743 + CubeMX - 两路FDCAN同时工作的终极方案(RTX5)
STM32H743 + CubeMX - 双路FDCAN同时工作的终极方案(裸机)
RTX5 | STM32H743 + CubeMX + RTX5 + 两路FDCAN模板
ADC
STM32H743 - 梳理ADC模数转换器在CubeMX上的配置
STM32H743 + CubeMX-使用ADC(16bit分辨率)模数转换器读取CPU的温度(串行方式)
STM32H743 + CubeMX-ADC(16bit分辨率)+ DMA采样三路模拟量(并行),没过采样
STM32H743 + CubeMX-ADC(16bit分辨率)+ DMA采样三路模拟量,硬件过采样器实现1024倍过采样
通讯协议
STM32H743 + CubeIDE - CanFestival实现两个CANopen Master同时独立运行
RTX5 | STM32H743 + CubeMX + RTX5 + 两路FDCAN驱动+CANopen协议
FLASH & RAM
STM32H743 + CubeIDE - 将变量定义到指定的内存
STM32H743 + CubeMX - 梳理MPU的设置
STM32H743 + Keil - 将变量定义到指定内存
STM32CubeIDE教程 - 查看FLASH与RAM细节
SMT32H743 + CubeMX - 配置MPU后,在Keil上的程序卡死
J-LINK RTT
SEGGER | 基于STM32F405 + Keil - RTT组件01 - 移植SEGGER RTT
SEGGER | 基于STM32F405 + Keil - RTT组件02 - RTT Viewer替代串口调试,实时打印调试log
SEGGER | 基于STM32F405 + Keil - RTT组件03 - RTT Viewer测试回环打印
SEGGER | 基于STM32F405 + Keil + rt_thread - RTT组件04 - RTT Viewer代替串口接入rt_thread console(终端)
SEGGER | 基于STM32F405 + Keil - RTT组件05 - J-Scope数据可视化,使用HSS方式
SEGGER | 基于STM32F405 + Keil - RTT组件06 - J-Scope数据可视化,使用RTT方式
SEGGER | 基于STM32F405 + Keil - RTT组件07 - J-Scope数据可视化,RTT方式 + DWT定时器时间戳
其他
STM32F407-学习STM32的SW与JTAG调试与下载电路的设计
STM32H743+CubeMX-移植ThreadX
STM32H743+Cube-Keil上移植RTX5实时系统
STM32CubeIDE教程-现场表达式切换数字进制表示
Keil | 解决Keil双击工程名无法打开.map的问题
Keil | 解决Keil与VScode配合使用时,代码与注释位置不一样的问题
Keil | 解决Keil与Source Insight4.0配合使用时,代码与注释位置(乱码)不一样的问题
Keil | 使用Register Windows测量函数的执行时间
STM32F407+CubeMX - 使用GPIO翻转+示波器测量函数的执行时间
bootloader | 基于STM32F407 - 使用STM32Cubeprogrammer的USB DFU进行固件烧写
bootloader | 基于STM32F407 - 使用STM32Cubeprogrammer的UART进行固件烧写
IAP-Bootloader | 基于STM32F407+STM32CubeMX - 通过按钮实现Bootloader程序与APP程序互相切换
STM32F407 | Embedded IDE01 - vscode搭建Embedded IDE开发环境(支持JLINK、STLINK、DAPLINK)
STM32F407 | Embedded IDE02 - 调试、断点、观察全局变量(支持JLINK、STLINK、DAPLINK)
STM32F103 | Embedded IDE03 - 使用OpenOCD在STM32F103项目时出现下载固件失败