【目的】这篇文章主要介绍STM32U575的TIM、PWM的使用。经过这次测试以后掌握
1、STM32CubeIDE创建PWM例程
2、PWM创建呼吸灯
什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 定时器创建与配置
1、经过查看原理图,要用开发板上的LED作为呼吸灯的输出,经查看LD2为PB7,可以做为TIM4—CHANNEL2作为输出。
2、使能HSE高速时钟:
3、配置PB7为TIM4—CH2
4、配置TIM4参数,按下图选择时钟源、配置Channel2为PWM Generation CH2. 同时配置PSC为160-1,Counter Period为500-1 (160M/160/500)得到2KHz的PWM频率。
- Mode 选择PWM模式1
- Pulse(占空比值) 先给0
- Fast Mode PWM脉冲快速模式 : 和我们配置无关,不使能
- PWM 极性: 设置为低电平 PS: 由于LED是低电平点亮,所以我们把极性设置为low
然后再开启定时器中断,保存参数后再次生成代码。
5、在main.c中添加用户自定义函数
/* USER CODE BEGIN 1 */ uint16_t pwmVal = 0; //PWM占空比 uint8_t dir = 1; //占空比计数方向 /* USER CODE END 1 */
使能TIM4-CH2输出:
/* USER CODE END 2 */ HAL_TIM_PWM_Start_IT(&htim4, TIM_CHANNEL_2); //PB7 为TIM2——CH2 /* Infinite loop */ 在主循环中添加改变占空比的代码(由于刷新显示占空比需要占用时间,所以没有使用延时): while (1)
{
if(dir == 1)
{
pwmVal = pwmVal + 10;
//__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_2, pwmVal); //修改比较值,修改占空比
sprintf(badmpu,"Pulse:%03d",pwmVal);
ILI9488_printText(badmpu,30,120,ILI9488_BLUE,ILI9488_WHITE,4);
TIM4->CCR2 = pwmVal;
if(pwmVal == 500)
dir = 0;
}
else
{
pwmVal =pwmVal - 10;
// __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_2, pwmVal); //修改比较值,修改占空比
TIM4->CCR2 = pwmVal;
sprintf(badmpu,"Pulse:%03d",pwmVal);
ILI9488_printText(badmpu,30,120,ILI9488_BLUE,ILI9488_WHITE,4);
if(pwmVal == 0)
dir = 1;
}
//HAL_Delay(1);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
|