STM32入门教程-2023持续更新中

新建工程
添加文件路径
设置Define

-------
,较强驱动,绝对控制
长脚+,短脚-
内部,较小+;较大-
Setbits:设置高电平
Resetbits:设置低电平
Writebit:利用枚举值设置端口
Bit_RESET低电平
Bit_SET高电平
---
中断,传感器计次
- 模块函数库(countsensor)
- 初始化模块(配置外部中断);
- RCC;
- GPIO;中断信号输入,参考数据手册GPIO 8.1.1
- AFIO;中断引脚选择EXITLINEConfig
- EXTI;边沿触发方式+触发响应方式;
- NVIC;合适优先级和分组;
- 中断函数IRQHandler;
- 中断标志位判断;
- 清除中断标志位;
调试模式,检测中断函数是否正常进行
---
计数计时电路,时基单元;
基本定时器,只能连接内部时钟CK-INT,基准频率72MHz
16位预分频器,最大2的16次方-165535
计数器,计数时钟上升沿,增加到目标值时,申请中断;
自动重装寄存器:存储目标值(自动重装值);申请中断后,计数值清零;
更新事件映射到TRGO,硬件自动,无需软件申请中断;
自动重装计数(通用;高级)
3种模式
向上计数:0-n+中断;0-n+
向下计数:5>0中断;5>0;
中央对齐计数:0-n中断n-0中断;
内部时钟f72Hz;
外部:ETR(引脚图)>ETRF;
TRGI(触发定时器从模式);ETR,ITR
(表78)
方式1:CH1>TIIF_ED上升沿,下降沿均可触发;
方式2:TIFP
4引脚
测输入波频率
区别申请中断;重复次数计数器;多个周期后申请中断
预分频控制,预分频缓冲寄存器;
CK_CNT=CK_PSC/(PSC+1)
定时器频率,内部时钟频率;预分频器
计数器溢出,既是计数器达到目标值;
计算计数时间=溢出频率倒数
ARR
影子寄存器;防止事件触发条件DUG
***
- RCC
- 时基单元的时钟源
- 配置时基单元
- ETR外部时钟和TIx有什么区别?????
- [6-2] 定时器定时中断&定时器外部时钟 P14 - 07:59
- 时基单元;结构体,有单独函数
- 中断使能;
- 中断优先级分组NVIC;
- 使能定时器;
跨文件变量;
尝试;
---
PWM
高低电平的选择;
占空比;
和步距有关;
连续变化波形

ARR 自动重装寄存器
CNT 计数器
练习:1KHz,占空比可调;分辨率1%
1000=72000000/720/100
CCR可调;
1/100
OC OutCompare
---
7_ADC
最大14MHz,
只能6,8分频
如果外部电压过小怎么办?-www-
- RCC CLOCK ADC,GPIO,ADCCLK,ADC的分频器;
- GPIO模拟输入;RCC
- 多路开关;接入规则组;
- ADC转换;转换模式,通道数,触发源,数据对齐;
- 模拟看门狗,配置阈值;
- ADC开关控制;
- ADC校准;
---
DMA
---
串口通信
TTL电平
8+1=9位,数据+校验
因为,异步,所以波特率
校验:奇校验、
计算DIV
+
查询、接收
---
I2C
优点:
1.半双工->SDA(单线路)
2.应答机制
3.接多个模块,且不干扰(一主多从,多主多从)
4.传输不可中断
USART对硬件要求严格,
5.同步时序协议,时钟线可以暂停->SCL(clock)
硬件电路
SCL SDA开漏输出,都加一个上拉电阻
时序单元

高位先行

应答机制
I2C
起始条件,终止条件,发送一个字节,接受一个字节,发送应答,接受应答
指定地址写
从机拥有一个唯一的设备地址,通过第一个字节(8位数据)判断接收方,7/10位地址,规定地址,或者改变电路改变后几位来改变地址
if7位地址,START:7位地址,之后0/1读/写,之后应答
指定地址读,
复合格式,
指定地址写的前半部分(可以接受可以不结束),指定地址指针,之后重新起始,开始读数据
当前地址读
{地址指针在读或者写之后都会自增1}
---
SPI
SCK=SCLK=CLK=CK;时钟线
MOSI&MISO=DO=DI;全双工
SS=NSS=CS;一主多从,从机选择,同一时间只能选择一个从机;
从机可能存在冲突;ss为高电平时(从机不响应时)MISO均为高阻态,从机不输出;
WEL(Write enable latch)