蓝桥杯嵌入式(G4系列):定时器输出可调PWM
创始人
2024-06-01 20:03:10

前言:

 

        蓝桥杯定时器输出PWM的考点在历届真题中的出现次数较多,而且之前关于STM32的学习,我对于使用STM32Cubemx配置PWM的方式确实不是很熟悉,这里简单记录一下自己的学习过程。

STM32Cubemx配置部分:

        这里我们是改编真题的要求,配置PA6 PA7 输出两路占空比可调的PWM,进入Cubemx,点击PA6,选择TIM3_CH1,点击PA7选择TIM3_CH2;

         其中,在PA7这里,我们可以看到其对应的通道较多,且带有TIM8_CH1N,这个CH1N是生成互补PWM波形的

         这里大家会发现,当我们选择完对应的通道后,管脚并没有变绿,说明我们还缺少一些步骤。

        我们来到左边,点击对应的定时器,将对应管脚选择为PWM Generation CH1

          对于CH2的选择,我们就不能选择PWM模式了,如果要想让一个定时器输出两个频率不同的PWM的话,肯定是要用输出比较模式的。在文章的末尾,我会给大家简单介绍一下PWM模式和输出比较模式的不同。

 

        当我们选择完后,对应的管脚也就变成了绿色

         然后来到下面,我们设置一下参数,这里就涉及到了一个知识点,PWM的频率的计算F = \frac{80Mhz}{(Prescaler+1)(Counter+1)}

这里因为我们在配置时钟树的时候,选择了80Mhz所以分子部分就变成了80Mhz,我们就是对Counter Period和Prescaler这两个地方进行配置,来分出符合要求的PWM。一路是100hz,要求分出100hz的PWM1,所以我们这里这样设置。对于下面那个Pulse决定了PWM的占空比。

        然后我们再把输出比较通道配置一下

        可能大家这里就会有疑问了,那不是还有PA7脉冲输出吗,这里为啥设置把PWM的频率设成100就不管不问了呢?详情见文章末尾!!!!

        勾选上中断,然后我们就可以生成代码了 

代码部分:

       我们在while(1)前面添加上开启PWM通道1和输出比较模式的通道2

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);		//开启PWM1通道
HAL_TIM_OC_Start(&htim3,TIM_CHANNEL_2);			//开启输出比较模式通道2

        如果需要修改PWM通道1的占空比的话,我们可以使用


__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,PA6_duty);

         使用输出比较模式,可以实现信号的相位调节和频率调节,但不能对信号的占空比进行调节

PWM模式和输出比较模式的区别:

        STM32 输出方波的方法有两种比较类似的,一个是PWM模式,一个是输出比较模式;下面我们简单阐述一下这两种模式的区别。对于PWM模式来说,当CNT CCR时输出相反的电平。而对于输出比较模式来说,当CCR(捕获/比较寄存器)==CNT(计数值)时,翻转输出电平。

        下面是PWM模式和输出比较模式的一个图像对比:

        PWM模式:

         输出比较模式:

         看到这的话,就很清晰了,PWM模式下: ARR 决定输出频率 ,CCR决定输出占空比。输出比较模式下:  ARR 决定输出频率  CCRx 决定每个通道的初始相位。这也就是我在上文提到的只配置了100HZ的频率,对应的输出比较产生了50hz的频率,上面的图很清晰的解释了原因。

PA7的波形图

PA6的波形图:

 

 

相关内容

热门资讯

围绕“加大保障和改善民生力度,... 5月11日至15日,全国政协副主席周强率全国政协专题调研组,围绕“加大保障和改善民生力度,扎实推进全...
浙江省“爱在浙里”集体婚礼暨“...   5月16日,浙江省民政厅主办的浙江省“爱在浙里”集体婚礼暨“积极婚育观”宣传系列活动举行,杭州主...
打起手鼓唱起歌!第二届中国新疆... 来源:石榴云/新疆日报 5月15日,第二届中国新疆民间艺术季新闻发布会在乌鲁木齐市召开。本届艺术季将...
降雨推迟,预计20时前后影响北... 气象部门介绍,当前降雨主要出现在房山和门头沟。截至18时,全市平均降水量1.0毫米,最大降水量为房山...
“我真的撑不住了”,2000万... 5月14日、15日两天,知名搞笑博主“大连老湿王博文”,分别在微信公众号和小红书上发表长文,宣布断更...