[ ST NUCLEO-U575ZI-Q 测评]+ 串口收发功能的测试及使用
[复制链接]
在厂家提供的例程中,有串口收发功能测试的示例,其使用的是UART2,即CN9上的引脚PD5和PD6,见图1所示。
图1 所用引脚
为此,需要用一个USB转TTL的模块来与开发板连接,见图2所示。
图2 器件连接
按说在上电后会在串口调试工具上见到一些调试内容,但却并无任何的迹象,只有开发板上的蓝色指示灯在不停地闪烁。
经对程序的分析才发现,原来这是在等发送的指令呢,必须按下板上蓝色的用户键才能发送信息,见图3所示。
在按下用户键键之后,蓝色的指示灯则会熄灭。这又是等待啥操作呢?
原来是在等你发送信息进行欢迎呢,此时你只有将原文一丝不差发送回去才会在比较后点亮蓝色指示灯。
图3 串口收发测试
相应的测试主程序如下:
int main(void)
{
HAL_Init();
SystemClock_Config();
SystemPower_Config();
MX_GPIO_Init();
MX_ICACHE_Init();
MX_USART2_UART_Init();
BSP_LED_Init(LED2);
BSP_LED_Init(LED3);
#ifdef TRANSMITTER_BOARD
BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);
while (UserButtonStatus == 0)
{
/* Toggle LED2*/
BSP_LED_Toggle(LED2);
HAL_Delay(100);
}
BSP_LED_Off(LED2);
if (HAL_UART_Transmit(&huart2, (uint8_t *)aTxBuffer, TXBUFFERSIZE, 5000) != HAL_OK)
{
Error_Handler();
}
if (HAL_UART_Receive(&huart2, (uint8_t *)aRxBuffer, RXBUFFERSIZE, 5000) != HAL_OK)
{
Error_Handler();
}
#else
if (HAL_UART_Receive(&huart2, (uint8_t *)aRxBuffer, RXBUFFERSIZE, 0x1FFFFFF) != HAL_OK)
{
Error_Handler();
}
if (HAL_UART_Transmit(&huart2, (uint8_t *)aTxBuffer, TXBUFFERSIZE, 5000) != HAL_OK)
{
Error_Handler();
}
#endif
if (Buffercmp((uint8_t *)aTxBuffer, (uint8_t *)aRxBuffer, RXBUFFERSIZE))
{
Error_Handler();
}
BSP_LED_On(LED2);
while (1)
{
}
}
这就为我们学习串口收发数据提供了良好的范例,那我们又能利用它来做些什么呢?
对于大多数的串口设备是通过指令来控制的,那通过这个例程能否发送字节指令呢?
回答是肯定的,下面就以串口为例加以测试。
实现要对应一个指令数组,并为其写入相应的指令内容:
uint8_t zl[] = {0x74,0x39,0x2E,0x74,0x78,0x74,0x3D,0x22,0x30,0x38,0x3A,0x31,0x32,0x3A,0x32,0x30,0x22,0xff,0xff,0xff};
然后使用方式函数:
HAL_UART_Transmit(&huart2, (uint8_t *)zl,20, 5000);
即可实现指令的发送,其发送的指令内容如图4和图5所示。
图4 指令内容
图5 十六进制形式
串口屏与开发板的连接方式和控制效果,则如图6和图7所示。
图6 连接方式
图7 显示效果
此外,值得一提的是不得不说开发板的输出功率还是可以的,居然能为串口屏提供电源支持!
|