stm32
stm32中的小常识
最小系统板
最小系统板由:电源、存储、芯片、时钟组成
绘制一个最小系统板一般需要包含如下模块:
- 5->3.3v降压电路
- 复位电路
- 自动下载电路
- usb转串口
- tf卡
- type-c电路
- led灯
经验
- 一般在stm32中,除开系统外设即位于内核里面的外设是不需要开启时钟的如(NVIC),其他的,什么片上外设都是需要开启时钟的。
- 使用一个stm32片上外设的基本步骤:
- 使用RCC函数开时钟
- 定义结构体,开始配置
- 使用Init函数完成初始化
- 使用cmd函数打开这个外设
- 常见的波特率为4800、9600、115200等。
- 1Mhz ~ 1us
- 通用外设配置方法
- 初始化:进行外设配置
- 编写读函数
- 编写写函数
- 编写中断服务函数
扩展阅读
shell引脚作用是固定
如何学习一个外设
- 其的功能
- 有哪些引脚,以及引脚的作用
- 配置结构体中参数的含义
其他知识点
- 关于预分频、分频、倍频
- 预分频:预分频是指在输入信号到达某个模块之前对信号进行分频。预分频可以用于降低信号频率,以适应模块的工作频率范围。预分频通常用于时钟信号的处理,以便将高频率的时钟信号转换为模块所需的低频信号。
- 分频:将输出的频率下降
- 倍频:将输出的频率上升
其实分频器就是一个计数器,需要分n的频,就需要来n次脉冲,然后再发送一次脉冲。
影子寄存器:在stm32中有一种寄存器称之为影子,这表示在物理上这个寄存器对应2个寄存器:一个是我们可以写入或读出的寄存器,称为预装载寄存器,另一个是我们看不见的、无法真正对其读写操作的,但在使用中真正起作用的寄存器,称为影子寄存器.
数据手册介绍预装载寄存器的内容可以随时传送到影子寄存器,即两者是连通的(permanently),或者在每一次更新事件(UEV)时才把预装载寄存器的内容传送到影子寄存器。
设计预装载寄存器和影子寄存器的好处是,所有真正需要起作用的寄存器(影子寄存器)可以在同一个时间(发生更新事件时)被更新为所对应的预装载寄存器的内容,这样可以保证多个通道的操作能够准确地同步。如果没有影子寄存器,软件更新预装载寄存器时,则同时更新了真正操作的寄存器,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上例如中断等其它因素,多个通道的时序关系有可能会混乱,造成是不可预知的结果。关于PWM,PWM的全称是脉冲宽度调制。PWM只可以应用于具有惯性的系统中,实际上就是不会瞬间跳变的系统。比如说:电机调速(电机断电之后不会马上停止)、LED呼吸灯(LED灯具有余晖,并且只要速度够快人眼根本看不出来是否开关)
所以
PWM
实际上就是一个快字几个重要的
PWM
参数:- 频率,一个高电平(也可以是低电平)到下一次高电平(或者是低电平)之间的周期的倒数
- 占空比,高电平所用的时间在一个周期中的时间比例
- 分辨率,就是占空比的变化步距,每次占空比可以变化多少。如占空比以:10% 10.1% 10.2%的样子来变化则分辨率是0.1
在stm32中如果自己操作寄存器的话:
- 设置位(一般为设置为1)使用
|=
- 清除位(一般为设置为0)使用
&=
1
2
3
4
5#define SET_BIT(REG, BIT) ((REG) |= (BIT))
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
#define READ_BIT(REG, BIT) ((REG) & (BIT))
- 设置位(一般为设置为1)使用
- Stm32中的引脚类型:
- 电源引脚:以 V 开头的 Vdd Vss 等等
- 晶振引脚:名字中有 OSC
- 复位引脚:NRST
- 下载引脚:串口下载、SWD下载、JTAG下载
- BOOT引脚:BOOT0、BOOT1
- GPIO引脚
在 stm32 中使用函数 printf 实际上是非常耗时间的事情,所以我们在实际产品开发中还是要少用这个函数
stm32
https://ysc2.github.io/ysc2.github.io/2023/10/29/stm32/