标题: 单片机应该不能只通过延时函数让两个输出口输出不同频率的波形吧? [打印本页]

作者: 迷茫的落叶    时间: 2021-1-20 11:47
标题: 单片机应该不能只通过延时函数让两个输出口输出不同频率的波形吧?
如题,有大佬过来解答一下吗?

作者: csmyldl    时间: 2021-1-20 12:13
可以用定时计数器确定波形周期,比用延时函数好
作者: xianfajushi    时间: 2021-1-20 12:36
定时也是延时的一种形式而已
作者: 人人学会单片机    时间: 2021-1-20 13:04
当然是可以的,下面这个是最小公倍数的算法。简简单单的三个IO口输出波形


作者: 迷茫的落叶    时间: 2021-1-20 14:02
csmyldl 发表于 2021-1-20 12:13
可以用定时计数器确定波形周期,比用延时函数好

嗯……为了精准延时我延时函数就是用定时器中断写的,基本能输出我想要的波形,但是如果我想同时输出两个不同的波形应该怎么办?
作者: 迷茫的落叶    时间: 2021-1-20 14:03
xianfajushi 发表于 2021-1-20 12:36
定时也是延时的一种形式而已

确实如此
作者: munuc_w    时间: 2021-1-20 14:34
用一个定时精度高一点的定时器,如定时1uS,在中断里计数,根据你  要的频率,处理计数值及标识,在主循环中判断不同的标识控制IO口。
作者: wangyuejia2015    时间: 2021-1-20 14:44
stm32 有专门pwm接口
作者: 龙千校    时间: 2021-1-20 16:39
看芯片带不带硬件PWM,没有的话只能软件pwm
作者: 迷茫的落叶    时间: 2021-1-20 16:51
munuc_w 发表于 2021-1-20 14:34
用一个定时精度高一点的定时器,如定时1uS,在中断里计数,根据你  要的频率,处理计数值及标识,在主循环 ...

你这么一说我感觉有点不知道怎么定时了,我现在用的51单片机自带24.5M的晶振,定时1us算不出来
作者: 迷茫的落叶    时间: 2021-1-20 16:58
人人学会单片机 发表于 2021-1-20 13:04
当然是可以的,下面这个是最小公倍数的算法。简简单单的三个IO口输出波形

这个牛逼,弄一个单独的计数器,根据当前数值来判断灯(输出)是否应该改变状态,我觉得可以套用(把这个写进定时器中断应该能达到很好的效果)
作者: 迷茫的落叶    时间: 2021-1-20 17:00
wangyuejia2015 发表于 2021-1-20 14:44
stm32 有专门pwm接口

还在学51呢,现在手上有块C8051F410,还在钻研
作者: 迷茫的落叶    时间: 2021-1-20 17:02
龙千校 发表于 2021-1-20 16:39
看芯片带不带硬件PWM,没有的话只能软件pwm

嗯,我找一找




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1