赞
踩
1、利用UART实现上位机PC与下位机开发板之间的数据通信
2、学会STM32CubeMX软件关于UART 中断方式的配置
3、具体目标:1、开发板将接收到的上位机数据反发送回上位机串口调试助手。
中断就是在寄存器有一个字节数据的时候触发一次中断,而不用一直扫描寄存器状态,节约了系统资源。例如串口接收24字节数据,HAL_UART_Receive_IT(&huart1, (uint8_t *)&Rx, 1) 意思就是每来一个字节数据中断一次,中断之后就进入回调函数进行处理,此时Rx是一个uint8_t的字节数据。HAL_UART_Receive(&huart1, (uint8_t *)Rx, 24)意思是没来一个字节数据中断一次,等接收到24个字节数据之后再统一进入回调函数之后进行处理,此时Rx是一个uint8_t的数组字节数据。
缺点:虽然解决了轮询不断扫描寄存器状态的缺点,但CPU接收数据会触发中断,对于实时要求高的场所,不适用。
- /* USER CODE BEGIN PV */
-
- uint8_t Rxbuf[2];
- uint8_t RxFlag = 0;
-
- /* USER CODE END PV */
- /* USER CODE BEGIN 2 */
-
- HAL_UART_Receive_IT(&huart1, (uint8_t *)Rxbuf, 2); // 使能串口接收中断
-
- /* USER CODE END 2 */
- while(1)
- {
- if (RxFlag)
- {
- RxFlag = 0;
- //发送
- HAL_UART_Transmit(&huart1,Rxbuf,2,100);
- }
- }
- /* USER CODE BEGIN 4 */
-
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- if (huart->Instance == USART1)
- {
- RxFlag = 1;
- HAL_UART_Receive_IT(&huart1, (uint8_t *)Rxbuf, 2); // 使能串口接收中断
- }
- }
-
- /* USER CODE END 4 */
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。