完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大概是用定时器实现。设置一个20us中断的定时器(根据你的需要的波形的最小周期设定)。然后在定时器中断中对IO的电平进行翻转(周期的整倍数翻转一次)
|
|
|
|
|
|
你最好把具体要求贴出了,毕竟你这个不是炙手可热的资料
|
|
|
|
|
|
要求就在附件里面的波形图,用io直接实现现在我想不到什么思路。
|
|
|
|
|
|
FPGA
|
|
|
|
|
|
还是不太明白,可以拿其中一路来举个栗子吗,谢谢了,
|
|
|
|
|
|
没有用到那个,就一个单片机,现在已经做好了20us的中断了,下一步不太清楚怎么做。
|
|
|
|
|
|
你的文件格式打不开,建议截张图。
|
|
|
|
|
|
用逻辑分析仪的那个软件打开
|
|
|
|
|
|
逻辑分析仪也有好多种,别人的不可能跟你的一样。
|
|
|
|
|
|
在中断函数里翻转对应的IO口呀(可以对八个IO口一起翻转的只要判断不同的周期就好了),实现你所需要的波形
|
|
|
|
|
|
嗯嗯,好的,谢谢
|
|
|
|
|
|
|
|
|
|
|
|
取8路信号的一个公共基准时间做定时基准,然后根据各个波形的要求在定时器中断里产生对应的波形
|
|
|
|
|
|
20us分辨率,用STM32的定时中断还是能够做得到的。
你这个周期不固定的,也只能用定时中断来间接实现了。 每个PWM输出定义4个变量,SetVal(周期时间设定)、Count(时间累计)、HiVal(输出高电平时间)、。 然后每个定时中断都判断每个PWM输出状态进行输出反转,比如: PWM1: if(Count[0] == 0) Out[0] = 1; if(Count[0] == HiVal[0]) Out[0] = 0; Count[0]++; if(Count[0] >= SetVal[0]) Count[0] = 0; PWM2: if(Count[1] == 0) Out[1] = 1; if(Count[1] == HiVal[1]) Out[1] = 0; Count[1]++; if(Count[1] >= SetVal[1]) Count[1] = 0; ........ |
|
|
|
|
只有小组成员才能发言,加入小组>>
1654 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4742 浏览 0 评论
4232 浏览 9 评论
3824 浏览 16 评论
4400 浏览 1 评论
4214浏览 3评论
2381浏览 0评论
3397浏览 0评论
1160浏览 0评论
2844浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 05:56 , Processed in 0.955243 second(s), Total 72, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2389