文章目录
- EXTI基本结构
- AFIO
- 定时器
- 1. STM32 定时器的种类
- 2. 定时器的主要功能
- 3. 定时器的配置
- 4. 定时器 PWM 输出模式
- 5. 定时器中断配置
- 输出比较
- 1. 输出比较模式概述
- 2. 输出比较模式的配置
- 今天实在有点疲惫了,明天继续学吧。
EXTI基本结构
AFIO
中断引脚选择,所有GPIO都可以中断,但是相同的引脚Pin不可以, 注意9-5,10-15是相同的中断,所以要用标志位进行区分。
AFIO功能:外设复用功能:在STM32中,一个I/O引脚可以有多种功能,如GPIO、UART、SPI、I2C等。AFIO模块通过寄存器配置,使得某个引脚对应的特定外设功能可以被激活。
重映射功能:STM32的部分引脚默认功能可能会与其他外设冲突,AFIO提供了一种方法来将这些功能“重映射”到不同的引脚,以避免冲突。
事件控制器:AFIO还支持事件控制功能,可以将某些事件连接到I/O端口,用于唤醒低功耗模式等。
触发选择器用来选择检测方式,中断屏蔽寄存器确定开启哪些中断。/20是20根线的意思.
定时器
1. STM32 定时器的种类
STM32 的定时器根据功能分为以下几类:
-
基本定时器(如 TIM6 和 TIM7):只有简单的计数功能,常用于周期性中断,不支持输入捕获和输出比较。
预分频器写定时器的计数频率可以通过预分频器进行进一步分频,计算公式为:
F t i m = F c l k ( P S C + 1 ) F_{tim} = \frac{F_{clk}}{(PSC + 1)} Ftim=(PSC+1)Fclk
其中, F c l k F_{clk} Fclk 是输入时钟频率, P S C PSC PSC 是预分频系数。
计数器会不断自增。计数器和自动重装载相等,把计数器清零,重新计数。
定时器主模式,通过主模式映射,实现硬件的自动化。 -
通用定时器(如 TIM2、TIM3、TIM4 、TIM5等):支持输入捕获、输出比较、PWM 生成和计数器模式,应用灵活,功能较多。
向下计数模式,中央对齐(先向上中断,然后下去中断)。
外部ETR经过滤波可以输入外部时钟 -
高级定时器(如 TIM1 和 TIM8):功能强大,具备高级的 PWM 输出控制、死区时间控制、刹车控制等功能,适合用于电机控制等复杂应用场景。
多了计数器可以多次计数后再中断。
DTG,死区,强力关断二极管。三相无刷电机。刹车输入电路,防止意外产生。
2. 定时器的主要功能
STM32 定时器具备以下核心功能:
- 计时功能:通过计数来精确测量时间,可以实现时间延迟。
- 输入捕获(Input Capture):捕获输入信号的脉冲宽度或周期。
- 输出比较(Output Compare):在计数器达到某一预定值时产生输出事件。
- PWM 输出:用于生成脉宽调制信号,常用于控制 LED 亮度或电机的速度。
- 编码器接口模式:可以用于电机控制中的位置和速度测量。
预分频缓冲器可以防止运行时频率变化对定时的影响。
3. 定时器的配置
STM32 定时器通过以下几个步骤进行配置:
-
时钟配置:定时器的计数频率由系统时钟分频得到。可以使用 RCC(Reset and Clock Control)模块来配置定时器时钟源。
时钟树:
如果外部72MHz时钟出问题了,会使用内部8MHz的。CSS,检测外部时钟是否有问题。 -
预分频器(Prescaler):
-
计数器模式:定时器可以配置为向上计数、向下计数或中心对称模式(即先向上计数再向下计数,适用于 PWM)。
-
自动重装载值(ARR):计数器计数到这个值后会自动重置,并可触发中断或事件。通过调整
ARR
可以实现不同的定时周期。 -
中断和事件:配置定时器的中断,可以在计数到达特定值(如
ARR
)时产生中断,从而执行特定任务。
4. 定时器 PWM 输出模式
PWM(脉宽调制)模式是 STM32 定时器的重要功能之一,通过 PWM 信号可以控制 LED 亮度、伺服电机角度、直流电机速度等。PWM 信号的占空比由定时器的计数值与比较寄存器的值来决定。
配置 PWM 输出模式的步骤如下:
- 选择 PWM 模式:将定时器的通道配置为 PWM 模式(如 PWM 模式 1 或 PWM 模式 2)。
- 设置占空比:设置比较寄存器
CCR
值来控制占空比,比较值占周期的比例决定 PWM 信号的高电平时间。 - 输出极性设置:可选择 PWM 信号的输出极性。
- 启动定时器:启用定时器,并在相关通道上产生 PWM 信号。
5. 定时器中断配置
STM32 定时器支持多种中断,例如更新中断、捕获中断、比较中断等。在使用中断时,需启用定时器和 NVIC(中断向量控制器)的中断通道。
配置步骤如下:
-
使能中断:在定时器的控制寄存器中设置中断使能位(如
TIM_IT_Update
)。 -
配置中断优先级:在 NVIC 设置中断优先级。
-
编写中断服务函数:在中断处理函数中,编写定时器到期后的任务。
-
清除中断标志:在中断服务函数中执行完成后,清除中断标志位以避免重复触发。
输出比较
在 STM32 中,TIM(定时器)的输出比较模式(Output Compare)是定时器模块的一个重要功能,用于生成特定的事件或输出信号。在输出比较模式下,定时器会将计数器的值与指定的比较值进行比较,当计数器达到比较值时,定时器会触发相应的事件或输出信号。
1. 输出比较模式概述
输出比较模式的核心是将定时器的计数器(CNT)的值与预设的比较寄存器(CCR)中的值进行比较。每当计数器的值与比较值相等时,TIM 就会执行相应的动作,比如触发中断、产生输出信号等。
STM32 的定时器提供多种输出比较模式,常用的包括以下几种:
- 冻结模式(Frozen Mode):计数器达到比较值时不会产生任何输出变化。
- 活动电平模式(Active Level Mode):计数器达到比较值时将输出设为高电平。
- 非活动电平模式(Inactive Level Mode):计数器达到比较值时将输出设为低电平。
- 翻转模式(Toggle Mode):计数器达到比较值时翻转输出电平。
- 强制输出模式(Force Active / Force Inactive):强制将输出设为高电平或低电平。
- PWM 模式(PWM Mode 1 / PWM Mode 2):PWM Mode 1:在这种模式下,当计数器的值小于比较寄存器 CCR 的值时,输出为高电平;当计数器的值大于或等于 CCR 的值时,输出为低电平。因此,占空比与 CCR 的值成正比,CCR 越大,高电平持续的时间越长。
- PWM Mode 2:在这种模式下,当计数器的值小于比较寄存器 CCR 的值时,输出为低电平;当计数器的值大于或等于 CCR 的值时,输出为高电平。
2. 输出比较模式的配置
在 STM32 中,输出比较模式可以通过以下步骤进行配置:
-
设置定时器时钟:启用定时器的时钟,设置预分频器(PSC)和自动重装载寄存器(ARR)以确定计数频率和周期。
-
选择输出比较模式:通过配置 TIMx_CCMRx 寄存器(捕获/比较模式寄存器),选择合适的输出比较模式,例如冻结模式、翻转模式等。
-
设置比较值:将比较值写入比较寄存器 TIMx_CCRy 中(其中 x 表示定时器编号,y 表示通道号),定时器会将 CNT 的值与 CCR 的值进行比较。
-
使能通道输出:通过 TIMx_CCER(捕获/比较使能寄存器)设置通道使能和极性,以允许信号输出。
-
启动定时器:设置 TIMx_CR1(控制寄存器 1)的使能位(CEN),开始定时器计数。