stm32驱动Tm1803 LED 控制芯片

因为 Tm1803 的驱动时间

因为电平时间是微秒级别的 如果cpu用普通io来处理的话 必须要关闭中断,完全没有实际使用价值

使用纯io操作,参考代码如下:

void LedDly(INT8U dly)
{
    while(dly)    --dly;
}

#define LedTime    12
#define SpiLedIO    PerpheralBit(GPIOB->ODR,15)
void TestLed(void)
{
    INT32U d=0x0000FF00;
    INT8U i,dly;
    SpiLedIO=0;
    for(i=0;i<10;i++)    LedDly(LedTime);
    SpiLedIO=1;    
    for(i=0;i<24;i++)
    {
        SpiLedIO=1;
        if(d&0x800000)        LedDly(LedTime*2/3);
        else        LedDly(LedTime*1/3);
        SpiLedIO=0;
        if(d&0x800000)        LedDly(LedTime*1/3);
        else        LedDly(LedTime*2/3);
        d<<=1;
    }
    SpiLedIO=0;
    for(i=0;i<10;i++)    LedDly(LedTime);
    SpiLedIO=1;    
}

 

本来打算做两个stm32的方案 一个用来处理业务,一个用来驱动led,

忽然灵机一动,可以使用spi的mosi的来硬件实现驱动电平的变化,然后外+一个dma,实现数据的自动发送

代码下载地址:https://download.csdn.net/download/ljxh401/10740436

 

展开阅读全文

没有更多推荐了,返回首页