完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一个定时器就可以,只说说我的思路:首先要有一个公共的时基,比如你的三路PWM范围是0~1000Hz,而你的占空比是以1%步进,那么就让定时器以10ms中断一次。
建立全局变量 【计数数组[3]】 和 【三份正占空比变量ABC】,这个正占空比变量是char类型,是在主while(1)中根据你的占空比得出来的,表示每中断多少次就翻转一次,在中断里只是为整个计数数组每个变量加一,在主while(1)中计数数组每到正占空比变量的值就翻转相应引脚,同时翻转标志变为【100-正占空比变量】。 表达能力有限,有很多地方说不清楚,就不多说了。 或许你可以看看讲并发机制的书。 |
|
|
|
谢谢,没听太懂,能简单的用程序表达一下吗?
|
|
|
|
一个定时器内跑最小的时基,然后定义变量自++到你需要的时间
void WMout(PWMH) //PWM输出 { if(time0<WMH) {  WM=1; } else {  WM=0; }> 同时注意要在定时器内加time0的范围限制函数 if(time0>100) { time0=0; } |
|
|
|
简单点说就像乐队的指挥,一个人指挥所有人
|
|
|
|
只有小组成员才能发言,加入小组>>
3269 浏览 9 评论
2947 浏览 16 评论
3446 浏览 1 评论
8967 浏览 16 评论
4041 浏览 18 评论
1084浏览 3评论
562浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
556浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2294浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1850浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 10:49 , Processed in 1.117643 second(s), Total 51, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号