因为 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