(蓝桥杯)STM32G431RBT6(TIM4-PWM)
一、基础配置
这个auto-reload preload是自动重装载值,因为我们想让他每改变一个占空比,至少出现一次周期
Counter Period(Autoreload Regisiter)这个设值为10000,那么就相当于它的周期是10000
脉冲宽度可以设置为占周期的一半,那么现在的输出就是50%的占空比
别忘了打开定时器3的中断
二、代码
(1)打开通道
打开TIM3的PWM的通道
要注意液晶屏和LED灯是有冲突的
(2)把弱函数改成强函数
在mian函数中调用此函数
(3)如何改变脉冲宽度(占空比)
3.1 替代OC_Config->Pulse
3.2 替代TIMx
因为htim是结构体变量不是指针,所以不用箭头,把箭头变成点。Instance是指针,所以可以用箭头
(4)注意
一定不要让LCD影响到LED端口(LCD的初始化及其执行的函数都要屏蔽掉)
PWM可以用于控制电机的转动,调速
(5)代码展示
函数都是写在main 函数和int 函数之外的
/* USER CODE BEGIN 0 */
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
static uint16_t temp_pluse=5000;//(调节PWM的占空比)
static uint8_t cnt_dir=0;//计数方向的标志位
if(cnt_dir ==0)
{
temp_pluse+=5;
if(temp_pluse>10000)
{
cnt_dir=1;
temp_pluse=9999;//(不能加数超过一万)
}
}
if(cnt_dir==1)
{
temp_pluse-=5;
if(temp_pluse<5000)
{
cnt_dir=0;
}
}
htim3.Instance->CCR3 = temp_pluse;
}
/* USER CODE END 0 */