1、查询(基本不用)
2、中断
3、中断+DMA
操作分3个步骤
1、设置STM32cubeMX,初始化代码在stm32f4xx_hal_msp.c,执行代码在main.C
2、打开中断和接收相关函数
//开启空闲中断 __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); //UART_IT_IDLE 空闲中断 //UART_IT_RXNE //UART_IT_TXE //UART_IT_PE //UART_IT_TC //UART_IT_LBD //UART_IT_CTS //UART_IT_ERR //开启DMA接收, HAL_UART_Receive_DMA(&huart1, (uint8_t*)uart1_rx_buf, USART1_RX_BUF_SIZE); //@file stm32f4xx_hal_uart.c /* 阻塞模式Blocking mode:通信以轮询模式执行。 (+) HAL_UART_Transmit() (+) HAL_UART_Receive() 非阻塞模式Non-Blocking:使用中断执行通信,这些API会返回HAL状态 (+) HAL_UART_Transmit_IT() (+) HAL_UART_Receive_IT() (+) HAL_UART_IRQHandler() 非阻塞模式Non-Blocking:使用DMA执行通信或,这些API会返回HAL状态 (+) HAL_UART_Transmit_DMA() (+) HAL_UART_Receive_DMA() (+) HAL_UART_DMAPause() (+) HAL_UART_DMAResume() (+) HAL_UART_DMAStop() 非阻塞模式Non-Blocking回调函数: (+) HAL_UART_TxHalfCpltCallback() (+) HAL_UART_TxCpltCallback() (+) HAL_UART_RxHalfCpltCallback() (+) HAL_UART_RxCpltCallback() (+) HAL_UART_ErrorCallback() 非阻塞模式Non-Blocking中止执行函数: (+) HAL_UART_Abort() (+) HAL_UART_AbortTransmit() (+) HAL_UART_AbortReceive() (+) HAL_UART_Abort_IT() (+) HAL_UART_AbortTransmit_IT() (+) HAL_UART_AbortReceive_IT() (+) HAL_UART_AbortCpltCallback() (+) HAL_UART_AbortTransmitCpltCallback() (+) HAL_UART_AbortReceiveCpltCallback() */
3、处理相关函数
处理相关函数一般放在中断函数,或者回调函数内。先判断中断串口号,中断类型,清除中断类型。
待补充