基于STM32CUBE MX 的TM1640的使用例程

本文介绍了如何使用STM32CUBE MX开发工具控制TM1640 LED驱动电路。TM1640内部集成MCU接口,简化了单片机资源的使用。文中通过两种延时方法实现驱动代码,并详细说明了GPIO配置、定时器延时、器件地址设置以及数据传输过程。代码中设置了器件地址模式为自动加一,亮度设为最高,并提供了清屏函数。
摘要由CSDN通过智能技术生成

基于STM32CUBE MX 的TM1640的使用例程

TM1640是一种LED驱动控制专用电路 内部集成有MCU数字接口(SCLK与DIN)即时钟脉冲引脚与数据输入引脚、数据锁存器、LED驱动电路。因此在使用单片机控制LED点阵或数码管时能减小单片机的资源,本例程将带大家了解TM1640的使用方法即如何编写相关的驱动代码(基于STM32CUBE MX开发工具)。

在这里插入图片描述本例程使用两种延时方法,一种是基于SysTick也就是24位的系统节拍定时器,具有自动重载和溢出中断功能。另一种就是定时器设置TIMx_CNT的值,从而实现精确延时。(如果不认识TIMx_CNT可以问问度娘,有详细的解释,本文不作赘述。)这里需要占用一个定时器。
在这里插入图片描述GPIO使用PB8、PB9模式为推挽输出,这是使用GPIO默认上拉,这部分比较简单,基本点一下即可。

定时器延时与SysTick延时函数

void delay_us(uint16_t us)
{
   
	uint16_t differ=0xffff-us-5; 

	
	HAL_TIM_Base_Start(&htim1);
	__HAL_TIM_SetCounter(&htim1,differ); 
	while(differ < 0xffff-5) 
	{
    
		differ = __HAL_TIM_GetCounter(&htim1); 
	} 
	HAL_TIM_Base_Stop(&htim1);
 
}
void delay_ms(uint16_t nms)
{
   
 uint32_t temp;
 SysTick->LOAD = 9000*nms;
 SysTick->VAL=0X00;//清空计数器
 SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
 do
 {
   
  temp=SysTick->CTRL;//读取当前倒计数值
 }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
    SysTick->CTRL
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值