完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
今天尝试了小车里面的直流电机部分,尝试了用pwm控制的变速转动及用改变IO口电平的正反转。
在控制变速转动中,拿之前的呼吸灯来做成功了。main.c中主函数如下: int main(void) { u16 led0pwmval=0; u8 dir=1; delay_init(); //延时函数初始化 LED_Init(); //初始化与LED连接的硬件接口 TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz while(1) { delay_ms(10); if(dir)led0pwmval++; else led0pwmval–; if(led0pwmval>300)dir=0; if(led0pwmval==0)dir=1; TIM_SetCompare1(TIM1,led0pwmval); } } 经过相应的定义和初始化之后,TIM1_PWM_Init(899,0);按我的理解通俗来说这句话可以控制一个循环周期的时长。“899”代表了arr的值,会决定周期时长;而“0”即psc的值会决定是否时钟预分频。 led0pwmval的值即直接控制了PWM的占空比。另外在这个实验中在配置 AFIO 相关寄存器的时候,必须先开启辅助功能时钟。 (之前两天的当中有什么情况需要用的IO的复位(AFIO))。 在while循环里面,先消抖,而后led0pwmval 即PWM 比较值,通过他的改变控制PWM的占空比。在每一个循环中,因为led0pwmval值的不同,灯的亮度会发生改变,同样的电机的转速也会发生改变。 另外在改变PWM的占空比的时候,改变值“300”,会发现当改变值超过300后,灯的亮度的改变将看不出来,只有时间的变化。是灯的原因与程序无关。 在直流电机的正反转当中,开始直接想的是在上一个转速上面直接改变IO口电平的状态来改变电机两个引脚的高低,达到正反转的目的,结果没能实现。具体原因还不知道。 然后单独尝试直流电机的正反转,即通过配置高低电平来实现控制电机的正反转。 |
|
|
|
只有小组成员才能发言,加入小组>>
2444 浏览 0 评论
9148 浏览 4 评论
36829 浏览 19 评论
5036 浏览 0 评论
24813 浏览 34 评论
1549浏览 2评论
1774浏览 1评论
2220浏览 1评论
1575浏览 0评论
548浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 09:55 , Processed in 2.175545 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号