STM32:定时器、PWM

目录

定时器Timer

定时器介绍

定时器中断实验

PWM介绍

PWM实验


定时器Timer

定时器介绍

软件定时

缺点:不精确、占用CPU资源

定时器工作原理:

使用精准的时基,通过硬件的方式,实现定时功能。定时器核心就是计数器。

 定时器分类:

基本定时器(TIM6~TIM7)

通用定时器(TIM2~TIM5)

高级定时器(TIM1和TIM8)

 STM32F103C8T6定时器资源:

通用定时器介绍:

1) 16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。
2) 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的
任意数值。
3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:
A.输入捕获
B.输出比较
C.PWM 生成(边缘或中间对齐模式)
D.单脉冲模式输出
4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)
的同步电路。
5)如下事件发生时产生中断/DMA:
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
C.输入捕获
D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路
F.触发输入作为外部时钟或者按周期的电流管理

 定时器计数模式:

 

 定时器时钟源:

 定时器溢出时间计算公式:

例如,要定时500ms,则:PSC=7199,ARR=4999,Tclk=72M

定时器中断实验

需求:使用定时器中断方法,每500ms翻转一次LED1灯状态。

1. RCC配置

2. LED1灯配置

3. 时钟数配置

4. TIM2配置

 

5. 工程配置
6. 重写更新中断回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim->Instance == TIM2)
    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}

7. 启动定时器
在main.c中,在定时器初始化命令之后加入以下代码:

HAL_TIM_Base_Start_IT(&htim2);

PWM介绍

STM32F103C8T6 PWM资源:

高级定时器(TIM1):7路

通用定时器(TIM2~TIM4):各4路

PWM输出模式:

PWM模式1:在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平; 在向

下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。

PWM模式2:在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平; 在向

下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。

 PWM周期与频率:

PWM占空比:

由TIMx_CCRx寄存器决定。

PWM实验

需求:使用PWM点亮LED1实现呼吸灯效果。

LED灯为什么可以越来越亮,越来越暗?

这是由不同的占空比决定的。

如何计算周期/频率?

假如频率为 2kHz ,则:PSC=71,ARR=499

LED1连接到哪个定时器的哪一路?

学会看产品手册:

 开始实战!

1. 设置时钟

2. 设置定时器

 

 记得把极性设置为Low,因为LED灯是低电平才亮。

3. 配置工程

4. 业务代码

// 定义变量
uint16_t pwmVal=0; //调整PWM占空比
uint8_t dir=1; //设置改变方向。1:占空比越来越大;0:占空比越来越小
// 使能 Timer4 第3通道 PWM 输出
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);
// while循环实现呼吸灯效果
while (1)
{
    HAL_Delay(1);//变化速率
    if (dir)
        pwmVal++;
    else
        pwmVal--;
    if (pwmVal > 500)
        dir = 0;
    if (pwmVal == 0)
        dir =1;
    //修改比较值,修改占空比
    __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值