蓝桥杯嵌入式G431(hal库)——PWM(2)

前言

        上一篇文章介绍了使用PWM Genneration 模式生成PWM波,本文将简绍PWM波生成的另外一种模式,输出比较(Output Compare )生成PWM波。

        定时器输出比较是一种在定时器中使用的比较功能。它可以将定时器的计数器值与预设的比较器值进行比较,来对输出电平进行置1、置0或翻转的操作。

CUBEMX配置如下:

修改部分:内部时钟源,通道一模式,分频系数,输出比较模式,记得开启NVIC

代码部分:

        开启输出比较

	HAL_TIM_OC_Start_IT(&htim2,TIM_CHANNEL_1);

        回调函数:

void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM2)																						
	{
		if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1)
		{
			uint32_t value=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);				
			if(flag)
			{
				__HAL_TIM_SetCompare(htim,TIM_CHANNEL_1,value+Frq-Dut);       //低电平脉冲个数
			}
			else
			{
				__HAL_TIM_SetCompare(htim,TIM_CHANNEL_1,value+Dut);          //高电平脉冲个数
			}
			flag=!flag;																									//轮流设置高低电平
				
		}
	}
		
}

        解析:

                频率=1000000/Frq            占空比=Dut/Frq

        定时器的计数器每次递增时与比较器中的预设值进行比较。当计数器值等于比较器值时,输出端口进行电平翻转,同时触发中断,在中断函数中写入下一次函数触发中断的值(value+Frq-Dut为低电平,value+Dut为高电平)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值