STM32标准库学习笔记
前言
(此文为我许久之前学习32标准库笔记的备份,不包含代码,仅图文)
以下先以STM32F103c8t6为例子
如果有时候不弹出代码提示格,按一下 ctrl+alt+空格 就可以了
Keil MDK STM32全系列 PACK包 下载地址汇总(持续更新...)转载_mdk 离线dfp 下载-CSDN博客
Keil MDK STM32全系列 PACK包 下载地址汇总(持续更新...)转载_mdk 离线dfp 下载-CSDN博客
MDK5.29,5.30,5.31,5.32,5.33, 5.34,5.35, 5.36, 5.37和各种pack软件包镜像下载(2022-05-04)_arm.mbedtls.1.6.0.pack下载-CSDN博客
MDK5.29,5.30,5.31,5.32,5.33, 5.34,5.35, 5.36, 5.37和各种pack软件包镜像下载(2022-05-04)_arm.mbedtls.1.6.0.pack下载-CSDN博客
各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别:
浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别_swd jtag 区别-CSDN博客
浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别_swd调试是什么意思-CSDN博客
————————
STM32系统结构:
————————
直接使用寄存器配置点灯:
(上图注释部分与非注释部分作用一样,表明此处为结构体指针)
C语言结构体与结构体指针的使用_c 结构体指针-CSDN博客
新建工程:
工程架构(标准库中的那些文件是干嘛用的):
————————
GPIO:
GPIO基本结构:
GPIO位结构图:
GPIO模式:
浮空输入/上拉输入/下拉输入:
模拟输入:
开漏输出/推挽输出:
复用开漏输出/复用推挽输出:
GPIO外设的推荐配置可以参考这里:
NVIC:
NVIC基本结构(用来管理中断的):
NVIC优先级分组:
外部中断(EXTI):
AFIO(数据选择器):(例:在PA0,PB0,PC0...中选一个接入EXTI,这就是为什么所有GPIO口都能触发中断,但相同的Pin不能同时触发中断的原因)
中断优先级:1.先判断抢占优先级,高抢占优先级可以打断低抢占优先级的中断
2.如果抢占优先级相同,再判断响应优先级,高响应优先级不能打断低响应优先级
————————
定时器:
基本定时器框图:
通用定时器框图:
定时中断基本结构:
预分频器时序:
计数器时序:
无预装 自动重装影子寄存器 时序图:
有预装 自动重装影子寄存器 时序图:
通用定时器输出比较:
输出比较模式(8种):
PWM:
输入捕获:
测量频率的两种方法:
输入捕获基本结构:
定时器编码器接口:
ADC:
逐次逼近ADC:
ADC基本结构图:
————————
DMA(数据转运小助手):
STM32的存储器映像:
DMA基本结构:
DMA转运数据的实际例子:
————————
串口通信:
通信接口:
USART外设:
USART基本结构:
数据帧:
起始位侦测:(不光是起始位,每一位都有16次采样,减少噪声的影响)
数据采样:
波特率发生器:
————————
I2C通信:
I2C时序:
(注意:串口通信是低位先行,I2C是高位先行)
应答:(注意:如果对SDA没有操作,SDA在上拉电阻的作用下默认为高电平,就是默认为1,也就是如果没有从机应答,那么默认就是非应答了)
MPU6050(陀螺仪):
STM32的I2C外设:
I2C框图:
I2C基本结构:
硬件I2C:
————————
SPI:
SPI数据交换模式0:
W25Q64芯片(非易失性存储器):
flash操作注意:
硬件SPI外设:
SPI框图:
SPI基本结构(图中标题打错了):
非连续传输:
连续传输:
————————
RTC:
Unix时间戳:
UTC / GMT:
Time.h 中各函数的作用:
BKP:
RTC:
RTC框图:
RTC基本结构:
部分外部硬件电路:
RTC操作注意事项:
————————
PWR电源控制:
电源框图:
低功耗模式:
睡眠模式:
停止模式:
待机模式:
WDG(看门狗):
独立看门狗框图:
键寄存器:
独立看门狗超时时间:
窗口看门狗框图:
窗口看门狗工作特性:
窗口看门狗超时时间:(PCLK1的时钟信号进到窗口看门狗预分频器之前先进行了一个固定的4096分频,所以计算时间时需要固定乘一个4096)
两种看门狗的差别:
————————
Flash闪存:
Flash基本结构:
Flash解锁(在键寄存器写入特定的值):
使用指针访问寄存器(volatile 的作用是防止编译器优化):
闪存全擦除:
闪存页擦除:
选项字节:
选项字节编程:
选项字节擦除: