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

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
TM1650是一款数字管驱动芯片,它可以驱动8位共阳数码管或LED灯。在使用STM32驱动TM1650时,需要注意以下几点: 1. 确定STM32的引脚连接方式,将TM1650的CLK、DIN、STB引脚与STM32的GPIO口相连。 2. 定义STM32的GPIO口,设置为输出模式,用于控制TM1650的CLK、DIN、STB引脚。 3. 编写驱动程序,通过GPIO口向TM1650发送数据,控制它的工作模式和显示内容。 以下是一个简单的STM32驱动TM1650的代码示例: ```c #define CLK_Pin GPIO_PIN_0 #define CLK_GPIO_Port GPIOA #define DIN_Pin GPIO_PIN_1 #define DIN_GPIO_Port GPIOA #define STB_Pin GPIO_PIN_2 #define STB_GPIO_Port GPIOA void TM1650_WriteByte(uint8_t data) { uint8_t i; for(i=0;i<8;i++) { if(data&0x01) HAL_GPIO_WritePin(DIN_GPIO_Port,DIN_Pin,GPIO_PIN_SET); else HAL_GPIO_WritePin(DIN_GPIO_Port,DIN_Pin,GPIO_PIN_RESET); data>>=1; HAL_GPIO_WritePin(CLK_GPIO_Port,CLK_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(CLK_GPIO_Port,CLK_Pin,GPIO_PIN_RESET); } } void TM1650_SendCommand(uint8_t command) { HAL_GPIO_WritePin(STB_GPIO_Port,STB_Pin,GPIO_PIN_RESET); TM1650_WriteByte(command); HAL_GPIO_WritePin(STB_GPIO_Port,STB_Pin,GPIO_PIN_SET); } void TM1650_SetDisplay(uint8_t brightness,uint8_t value) { TM1650_SendCommand(0x68); //设置工作模式 TM1650_SendCommand(0x40 | (brightness&0x07)); //设置亮度 TM1650_WriteByte(value); //设置显示内容 } ``` 在上述代码中,TM1650_WriteByte函数用于向TM1650发送一个字节的数据,TM1650_SendCommand函数用于设置TM1650的工作模式和亮度等参数,TM1650_SetDisplay函数用于设置TM1650的显示内容。需要注意的是,每次向TM1650发送数据时,需要先拉低STB引脚,再将数据通过DIN引脚发送给TM1650,最后再拉高STB引脚,以触发数据的传输。 在实际使用过程中,还需要根据具体的硬件连接和需求进行修改和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值