NUCLEO-U5A5ZJ 开发板提供了串口通信的调试性能,为此可利用它来控制相应的串口设备,如串口屏、数据记录模块、MP3播放模块等。 由于这些串口设备多是以指令的方式来控制,而非普通的字符串,故对串口发送字节指令的功能进行了测试。 测试的主程序为: int main(void)
{
uint8_t zp[] = {0x74,0x38,0x2E,0x74,0x78,0x74,0x3D,0x22,0x32,0x30,0x32,0x32,0x2D,0x31,0x32,0x2D,0x31,0x30,0x22,0xff,0xff,0xff};
HAL_Init();
SystemClock_Config();
SystemPower_Config();
MX_GPIO_Init();
MX_MEMORYMAP_Init();
MX_SPI1_Init();
MX_ICACHE_Init();
MX_USART1_UART_Init();
HAL_UART_Transmit(&huart1, (uint8_t *)zp,22, 5000);
while (1);
}
经测试,其结果如图1所示,说明其可以完成字节指令的发送。 图1 指令发送测试
此外,在串口设备的使用中也离不开数据的接收处理,为此也对数据接收功能进行了测试。
进行接收处理的程序为: HAL_UART_Transmit(&huart1, (uint8_t *)zp,22, 5000);
while(y)
{
HAL_UART_Receive(&huart1, (uint8_t *)aRxBuffer, 7, 5000);
if (aRxBuffer[0]==0x4E)
{
tn=(aRxBuffer[1]-'0')*16+aRxBuffer[2]-'0';
ty=(aRxBuffer[3]-'0')*16+aRxBuffer[4]-'0';
tt=(aRxBuffer[5]-'0')*16+aRxBuffer[6]-'0';
zp[10]=aRxBuffer[1];
zp[11]=aRxBuffer[2];
zp[13]=aRxBuffer[3];
zp[14]=aRxBuffer[4];
zp[16]=aRxBuffer[5];
zp[17]=aRxBuffer[6];
HAL_UART_Transmit(&huart1, (uint8_t *)zp,22, 5000);
aRxBuffer[0]=0x0;
}
}
经测试,其结果如图2所示,说明可以完成数据的接收处理。 图2 接收数据测试
有了前面的基础,就可加以应用了。这里是用串口来控制触摸显示屏,所用串口屏为7寸触摸屏,其分辨率为800*480像素点, 它与开发板的连接关系如图4所示,所使用的是串口UART 1。 图3 串口引脚
图4 连接形式
为接收和显示数据,其界面设计如图5所示。 图5 界面设计
在更新显示数据时,只需接收串口所发送的数据指令即可。 以更改气压值为例,就是更新变量t1的文本值,其指令形式为:t7.txt=“数据值”ff ff ff。 以串口将气压值更新为“1022”的指令如图6所示,其更新效果见图7所示。 图6 发送气压更新指令
图7 更新气压值
以串口将日期更新为“2023-12-28”的指令如图8所示,其更新效果见图9所示。 图8 发送日期更新指令
图9 更新效果
经前面的测试,将串口屏与开发板连接到一起后,即可以串口来完成两者间的数据传送。
|