1 效果展示
2 Cube 串口设置
3 代码编写
main.c
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint8_t buffer[500];
/* USER CODE END 0 */
/* USER CODE BEGIN 2 */
HAL_UART_Receive_DMA(&huart1,buffer,500);
__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
/* USER CODE END 2 */
stm32f1xx_it.c
(不同型号的板子名称不一样,但结尾都是_it.c)
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
extern uint8_t buffer[500];
/* USER CODE END PV */
/**
* @brief This function handles USART1 global interrupt.
*/
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE) != RESET)
{
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
HAL_UART_DMAStop(&huart1);
uint8_t len = 500 - __HAL_DMA_GET_COUNTER(huart1.hdmarx);
HAL_UART_Transmit_DMA(&huart1,buffer,len);
HAL_UART_Receive_DMA(&huart1,buffer,500);
}
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
觉得不错,帮忙点个赞,谢谢。