中奖又快一个月了,中间参加ST公司的广州研讨会又得了一块H563的开发板,就一起展示一下了。
看着还是蛮精致的,到网上下载了STM32Cube_FW_H5_V1.1.0,因为后期打算用H563,所以用H563先简单跑个例程。(STM32CubeIDE用的少,本来想弄个TCP SEVER的,没找到合适的例程)
用"D:\STM32CubeH5_V1.1.0\STM32Cube_FW_H5_V1.1.0\Projects\NUCLEO-H563ZI\Examples\UART\UART_TwoBoards_ComPolling\STM32CubeIDE\.project"
原例程是需要两个板子进行收发比较,简单改了一下,变成用串口调试助手控制H563的LED。
将例程中原来的发送字符串改掉
/* Buffer used for transmission */
//uint8_t aTxBuffer[] = " **** UART_TwoBoards_ComPolling **** **** UART_TwoBoards_ComPolling **** **** UART_TwoBoards_ComPolling **** ";
uint8_taTxBuffer[] = "LED";
/* Buffer used for reception */
uint8_taRxBuffer[RXBUFFERSIZE + 1]; /* 多留一个字节 */
增加一个LED2的初始化
BSP_LED_Init(LED2);
注释掉原来的接收处理
// /*##-2- Put UART peripheral in reception process ###########################*/
// if (HAL_UART_Receive(&huart2, (uint8_t *)aRxBuffer, RXBUFFERSIZE, 5000) != HAL_OK)
// {
// Error_Handler();
// }
在循环语句里增加以下处理
/*##-2- Put UART peripheral inreception process ###########################*/ if (HAL_UART_Receive(&huart2,(uint8_t *)aRxBuffer,RXBUFFERSIZE + 1, 5000) != HAL_OK) { BSP_LED_On(LED3); BSP_LED_Off(LED1); BSP_LED_Off(LED2); } else { /*##-3-Compare the sent and received buffers ##############################*/ if (!Buffercmp((uint8_t*)aTxBuffer, (uint8_t *)aRxBuffer,RXBUFFERSIZE)) { BSP_LED_Off(LED3); if (aRxBuffer[3] == '2') { BSP_LED_On(LED2); BSP_LED_Off(LED1); } else if (aRxBuffer[3] == '1'){ BSP_LED_On(LED1); BSP_LED_Off(LED2); } } else { BSP_LED_On(LED3); BSP_LED_Off(LED1); BSP_LED_Off(LED2); }
} 这样就可以
通过串口调试助手用字符串来控制LED的点亮。
程序读取数据,5s没收到数据,则点亮红灯LED3,
收到LED1则点亮绿灯LED1,
收到LED2点亮黄灯LED2。
后续,这块H563的调试端口有点问题,时不时的不能接通。
插上电脑,有时枚举不出STLINK,那块H503则没有类似现象。
仅仅修改了例程里面的MAIN.c
|
奖励500家园币