定时器与PWM
任务要求:
- 之前作业中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。请设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁,实现一个多任务并发运行的功能。思考,如果不采用定时器,如何同时完成上面两个周期性任务?
- 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。
一、定时器任务
1.项目创建
选择我们所需要的芯片

配置RCC

配置SYS

配置GPIO端口

配置定时器TIM2

配置定时器TIM3

配置NVIC

配置优先级

配置USART

配置时钟

之后点击Project Manager进行配置


最后生成代码
2.编写代码
在图示位置添加代码
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_Base_Start_IT(&htim3);

串口发送代码
在图示位置添加代码
uint8_t hello[20]="hello windows!\r\n";

定时中断回调代码
在图示位置添加代码
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static uint32_t time_cnt =0;
static uint32_t time_cnt3 =0;
if(htim->Instance == TIM2)
{
if(++time_cnt >= 400)
{
time_cnt =0;
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_3);
}
}
if(htim->Instance == TIM3)
{
if(++time_cnt3 >= 1000)
{
time_cnt3 =0;
HAL_UART_Transmit(&huart1,hello,20,100000);
}
}
}

3.连接元器件
按照下图安装元器件

4.实验结果
定时器1
定时器2
5.不使用定时器的实现方法
如果不使用定时器,可以通过以下方法实现两个周期性任务:
循环计数法:
使用一个全局变量作为计数器。
在主循环中,每次循环增加计数器。
当计数器达到5秒对应的值时,发送串口数据,并重置计数器。
当计数器达到2秒对应的值时,切换LED状态,并重置计数器。
操作系统调度:
使用一个简单的实时操作系统(如FreeRTOS)来管理任务。
创建两个任务,一个任务负责发送串口数据,另一个任务负责LED闪烁。
操作系统负责调度这两个任务,确保它们按周期执行。
二、 LED呼吸灯
1.项目创建
选择我们所需要的芯片

配置RCC

配置SYS

配置定时器TIM3

配置定时器TIM4

配置时钟

配置项目


之后生成代码
2.代码编写
打开生成的keil文件
定义全局变量
在图示位置输入代码
uint16_t pwm=0; //占空比

打开PWM通道
在图示位置添加代码
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1);

在while中写入代码
while (pwm< 500)
{
pwm++;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwm);
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_1, pwm);
HAL_Delay(1);
}
while (pwm)
{
pwm--;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwm);
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_1, pwm);
HAL_Delay(1);
}
HAL_Delay(200);

3.元器件连接

4.实验结果
PWM呼吸灯
三、总结与心得体会
1.使用定时器实现多任务并发运行的优点:
时间精度高: 定时器可以提供精确的时间控制,确保任务按预定周期执行。
CPU利用率高: 在非定时器溢出期间,CPU可以处理其他任务,提高系统效率。
而不使用定时器的方法(如循环计数法或操作系统调度)虽然也能实现多任务,但可能存在以下问题:
时间精度低: 循环计数法依赖于主循环的执行速度,可能导致时间精度不高。
系统复杂度高: 使用操作系统调度需要额外的配置和调试,增加了系统的复杂度。
因此,定时器是实现多任务并发运行的一种有效且高效的方法。
2.PWM原理
PWM(脉冲宽度调制)原理:
PWM通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。PWM控制技术的重要理论基础是面积等效原理,即冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。
PWM的应用:
PWM可以在合适的信号频率下,通过一个周期里改变占空比的方式来改变输出的有效电压。这种原理使得PWM能够实现D/A转换,并用于控制LED亮度、电机转速等。
2053

被折叠的 条评论
为什么被折叠?



