上篇文章使用固定地址模式,IO模拟串口控制Tm1652。但是这种情况是存在弊端的。
因为IO模拟全靠延时,首先不会精准,其次当存在多任务调度时候,延时就会影响其他任务。一旦其他任务优先级高,那么TM1652就容易导致乱码。
本次使用地址自增一模式,硬件串口实现对Tm1652的控制
#define POPR_DIS_POWER GPIO_PORT_C
#define PIN_DIS_POWER GPIO_BIT_6
#define PIN_DIS_D PORTC6_FUNC_C6
#define TM1652_CMD_CONTROL 0x18
#define TM1652_CMD_DISPLAY 0x08
static void tm1652_init(void)
{
uart_param_t parm = {
.baud_rate = 19200,
.data_bit_num = 8,
.pari = 2,
.stop_bit = 1,
.uart_idx = 1};
system_set_port_mux(GPIO_PORT_A, GPIO_BIT_7, PORTA7_FUNC_UART0_TXD);
uart_init1(UART0, parm);
}
static void display_power_init(void) {
uint8_t sentBUf[20] = {0};
system_set_port_mux(POPR_DIS_POWER, PIN_DIS_POWER, PIN_DIS_D);
gpio_set_dir(POPR_DIS_POWER, PIN_DIS_POWER, GPIO_DIR_OUT);
gpio_set_pin_value(POPR_DIS_POWER, PIN_DIS_POWER, 1);
sentBUf[0] = TM1652_CMD_DISPLAY;