是否可以通过DMA 控制PWM输出个数来控制一个模块?

2019-08-22 13:31发布

本帖最后由 xingnaipeng 于 2017-4-12 21:49 编辑

是这样的一个模块:1:控制口为单线口。
2:启动脉冲1ms低+4ms 高
3:输出字节:1ms低+3ms高为0;1ms高+3ms低为1,

目前采用的办法是delay_ms(X)来输出,但是这样,MCU的效率有点低。如果输出字节多的话,要有好几秒的delay了。

突然想到一个办法,就是把数据放到DMA里面,控制PWM。

求助是否可行,或者解决思路。
目前的程序:
void Write(u8 addr)
{
    u8 i;
    S_Low();
   delay_ms(1);
    S_High();
    delay_ms(4);
        for(i=0;i<8;i++)
        {
                S_High();
                if(addr&0x01)
                {
                        delay_ms(3);
                        S_Low();
                        delay_ms(1);        
                }
                else
                {
                        delay_ms(1);
                        S_Low();
                        delay_ms(3);                        
                }
                addr >>=1;
        }
        S_High();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。