上次做了一个通道输出的PWM波,由于有时候我们需要输出多个PWM波形,但是只有少量可用定时器的情况下我们需要使用一个定时器提供多个PWM波,本次实验目的就是生成三个频率都为500Hz,占空比为60%、70%、80%的PWM波。
之前的步骤我就不写了,具体看我上一篇博客,在此附上链接:
STM32Cube的PWM控制基础篇(一)一路PWM设置
一、多路PWM原理
在上次说到,PWM是基于定定时器来使用的,换而言之:
PWM依托的定时器频率=PWM频率
(划重点,要考)
我们可以改变的就是每一路的占空比,所以上次讲的PWM两个因素已经确定,立马开工。
二、操作步骤
在上次建立的工程文件,找到STM32cube的文件,在项目根目录下可以找到【项目名.ioc】文件,打开后直接进针脚设置界面,打开定时器TIM1,设置多个Channel为PWM Generation CH1~CH3(PS:设置好之后再引脚设置界面确定你所需要的输出引脚)我这里分别是PA8,PA9,PA10。
设置完成后其他设置按照之前的设置不做改动,直接进代码部分
6、代码部分(设置PWM占空比)
具体公式我在上一次已经讲过,有需要的同学拉到最上面点击链接查看
我们在main.c文件下的用户代码2部门添加如下代码
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 600);
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, 700);
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_3, 800);
/* USER CODE END 2 */
上半部分启动三路PWM,下班部分设置占空比,由于我的预分频系数为1000,所以百分比是按照占空比和预分频系数的比来确定。
三、实验结果
现在将代码编译、下载到自己的开发板上,我这边检测方式为逻辑分析仪测试,将逻辑分析仪的三个测试端子连接到PWM输出引脚上,结果如下:
为了方便大家看懂,我把三个波形用逻辑分析仪解码后得到每个波形的周期以及占空比,由图可知周期为2.0ms,所以频率为500Hz,频道1、2、3的PWM波占空比分别为60%、70%、80%,至此,试验成功!
Good Game!!!!!!
接下来会推出一系列的关于PWM控制电机的分享,有需要的猿们敬请关注!!!!!
以上内容欢迎大家转载引用,标明出处即可!!!!!