首页 > 编程知识 正文

51单片机如何实现pwm波功能,单片机pwm波汇编程序

时间:2023-05-03 16:00:08 阅读:168287 作者:883

系列文章目录提示:您可以在此添加系列文章中所有文章的目录。 目录必须自己手动添加

例如,第一章Python机器学习入门中pandas的使用

提示:写完文章后,目录可以自动生成。 如何生成可以参考右边的帮助文档

文章目录系列文章目录序言一、PWM波二是什么,示例1.32利用定时器hxdbq1的通道1输出PWM2.使用分析。

首先,目前学习单片机是为了参加各种机器人比赛,而PWM是控制舵机和电机的法宝,经过一段时间的学习,准备进行总结,也便于后续的查询。

另一方面,PWM波脉宽调制(PWM )是一种利用微处理器数字输出控制模拟电路的非常有效的技术,广泛应用于从测量、通信到功率控制和转换等诸多领域。

——百度

你不明白吗,我也不明白。 我们只需要知道在单片机中PWM有什么用就可以了。 你看过呼吸灯吧。 那是逐渐变亮变暗的类型。 另外还有舵机方向的控制。 电机的旋转方向和速度的控制离不开PWM。 这也是我们在单片机上使用PWM的原因。

二.代码示例1.32使用定时器hxdbq1的通道1输出PWM代码如下: (例) :

# include 'pwm.h'//通过数据手册检查获得的hxdbq1的信道1的默认GPIO是pa8voidPWM_init(U16ARR,u16 psc )//) arr1) psc 1) //定时器初始化设置结构hx dbq _ ocinittypedefhxdbq _ ocinitstructure; //定时器通道初始化结构RCC _ AP B2 periphclockcmd (RCC _ AP B2 per iph _ hx dbq 1,ENABLE ); //使能计数器1时钟RCC _ AP B2 periphclockcmd (RCC _ AP B2 per iph _ gpioa,ENABLE ); 启用GPIOA时钟gpio _ init structure.gpio _ pin=gpio _ pin _ 8; gpio _ init structure.gpio _ mode=gpio _ mode _ af _ PP; //复用推挽输出,hxdbq1 CH1的PWM波形gpio _ init structure.gpio _ speed=gpio _ speed _ 50m Hz; //GPIO端口速率gpio_init(gpioa,GPIO_InitStructure ); //hx dbq _ time base structure.hx dbq _ period=arr; //自动重载值hx dbq _ time base structure.hx dbq _ prescaler=PSC; //设定预分频系数hx dbq _ time base structure.hx dbq _ clock division=0; hx dbq _ time base structure.hx dbq _ counter mode=hx dbq _ counter mode _ up; //技术模式hxdbq_timebaseinit(hxdbq1,hxdbq_TimeBaseStructure ); //hx dbq _ ocinitstructure.hx dbq _ oc mode=hx dbq _ oc mode _ PWM 1; //脉冲调试模式hx dbq _ ocinitstructure.hx dbq _ output state=hx dbq _ output state _ enable; //比较输出启用hx dbq _ ocinitstructure.hx dbq _ pulse=0; //要加载到捕捉比较寄存器中的脉冲值hx dbq _ ocinitstructure.hx dbq _ oc polarity=hx dbq _ oc polarity _ high; //输出极性为高(变更为低时1个周期内波形相反) hxdbq_OC1init ) hxdbq1、hxdbq_OCInitStructure; 初始化//hxdbq_ctrlpwmoutputs(hxdbq1,ENABLE ); //MOE主输出启用hxdbq_OC1preloadconfig(hxdbq1,hxdbq_OCPreload_Enable ); //预加载使能hxdbq_arrpreloadconfig(hxdbq1,ENABLE ); 启用将hxdbq1预加载到ARR的寄存器HXDBQ_cmd(HXDBQ1,ENABLE ); //hx dbq1//hx dbq _ set compare1(hx dbq 1,5 )//启用比较函数)2.不管是上面我用分析写的PWM模块代码还是其他代码,从头到尾怎么写

在主函数中,通过定义重新加载值和预分频系数来改变PWM波的周期,hxdbq_setcompare1(hxdbq1,n )使用该比较函数来改变占空比。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。