这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 【MSP焕新大作战】课程2-配置定时器+数码管

共1条 1/1 1 跳转至

【MSP焕新大作战】课程2-配置定时器+数码管

高工
2024-05-16 21:38:40     打赏

添加定时器,很方便,能直接生成指定时间的中断

添加中断程序


void TIMER_0_INST_IRQHandler(void)
{
	switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST))
	{
	case DL_TIMER_IIDX_ZERO:
		work.timer_ms += 1;
		if ((work.timer_ms % 1000) == 0)
		{
			DL_GPIO_togglePins(GPIO_LEDSR_PORT,GPIO_LEDSR_PIN_0_PIN);
			work.timer_s++;
		}
		break;
	default:
		break;
	}
}


由于材料包中的数码管总有问题,我换用了一个带专用数码管驱动(MAX7219)的数码管,通过总线通信,根据配置显示,自动动态,不用再软件里一直刷新原理图如下

芯片管脚描述

时序图

连线

DIN-PA4 CS-PA5 CLK-PA3

驱动直接在网上找了

//--------------------------------------------
// 功能:向MAX7219(U3)写入字节
// 入口参数:DATA
// 出口参数:无
// 说明:
void Write_Max7219_byte(uint8_t DATA)
{
	uint8_t i;
	CS_L;
	for (i = 8; i >= 1; i--)
	{
		CLK_L;
		if (DATA & 0x80)
			DIN_H;
		else
			DIN_L;
		DATA = DATA << 1;
		CLK_H;
	}
}
//-------------------------------------------
// 功能:向MAX7219写入数据
// 入口参数:address、dat
// 出口参数:无
// 说明:
void Write_Max7219(uint8_t address, uint8_t dat)
{
	CS_L;
	Write_Max7219_byte(address); // 写入地址,即数码管编号
	Write_Max7219_byte(dat);	 // 写入数据,即数码管显示数字
	CS_H;
}

void Init_MAX7219(void)
{
	Write_Max7219(0x09, 0x00); // 译码方式:BCD码
	Write_Max7219(0x0a, 0x03); // 亮度
	Write_Max7219(0x0b, 0x07); // 扫描界限;4个数码管显示
	Write_Max7219(0x0c, 0x01); // 掉电模式:0,普通模式:1
	Write_Max7219(0x0f, 0x01); // 显示测试:1;测试结束,正常显示:0
}

void smg_init(void)
{
	Init_MAX7219();
	Write_Max7219(0x0f, 0x00); // 显示测试:1;测试结束,正常显示:0
}

应用函数

void smg_pro(void)
{
	uint8_t t;
	Write_Max7219(1, 0);
	Write_Max7219(2, 0);
	Write_Max7219(3, 0);
	Write_Max7219(4, 0);
	Write_Max7219(5, 0);
	Write_Max7219(6, 0);
	Write_Max7219(7, 0);
	Write_Max7219(8, smgtabchar[t]);
        t--;
        if (t == 255)
            t = 0;
}




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]