HAL库配置UART

1、查询(基本不用)

2、中断

3、中断+DMA

操作分3个步骤

1、设置STM32cubeMX,初始化代码在stm32f4xx_hal_msp.c,执行代码在main.C

HAL库配置UART

 

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、处理相关函数

      处理相关函数一般放在中断函数,或者回调函数内。先判断中断串口号,中断类型,清除中断类型。

      待补充

上一篇:IOMMU历史知识及与VFIO的联系


下一篇:DMA攻击资料收集