32 lines
1.2 KiB
C
32 lines
1.2 KiB
C
#include "uart_lcd.h"
|
||
#include "usart.h"
|
||
#include "lwip.h"
|
||
|
||
extern ip4_addr_t ipaddr;
|
||
uint8_t ip_addr[24] = {0};
|
||
/**
|
||
* @brief 通过UART向LCD屏幕绘制IP地址
|
||
*
|
||
* 此函数通过UART接口向LCD屏幕发送IP地址,以便在屏幕上显示。
|
||
*
|
||
* @note 此函数假定已经正确初始化了UART接口,并且LCD屏幕已经正确连接到UART接口。
|
||
*/
|
||
void uart_lcd_draw_ipaddr(void)
|
||
{
|
||
// 串口发送的固定值为串口屏指令指定的帧头帧尾
|
||
ip_addr[0] = 0xEE; // 帧头
|
||
ip_addr[1] = 0xB1;
|
||
ip_addr[2] = 0x10; // 命令码,此处为文本控件文本设置指令
|
||
ip_addr[3] = 0x00; // 画面ID高位地址
|
||
ip_addr[4] = 0x00; // 画面ID低位地址
|
||
ip_addr[5] = 0x00; // 控件ID高位地址
|
||
ip_addr[6] = 0x03; // 控件ID低位地址
|
||
char *ip_addr_str = ipaddr_ntoa(&ipaddr);
|
||
MEMCPY(ip_addr + 7, (uint8_t *)ip_addr_str, strlen(ip_addr_str));
|
||
ip_addr[7 + strlen(ip_addr_str)] = 0xFF; // 帧尾,下列都为帧尾
|
||
ip_addr[8 + strlen(ip_addr_str)] = 0xFC;
|
||
ip_addr[9 + strlen(ip_addr_str)] = 0xFF;
|
||
ip_addr[10 + strlen(ip_addr_str)] = 0xFF;
|
||
dma_usart_send(&huart4, ip_addr, ARRAY_LEN(ip_addr));
|
||
}
|