• STM32L0 HAL库 UART 串口读写功能


    串口发送功能:

    uint8_t TxData[10]= "01234abcde";
    HAL_UART_Transmit(&huart2,TxData,10,0xffff);//把TxData的内容通过uart2发送出去,长度是10,timeout的时间是最大值0xffff

    串口接收功能1:

    uint8_t value='F';
    HAL_UART_Receive(&huart2,(uint8_t *)&value,1,1000);//在这个语句停留1000ms内等待接收1个字节数据,把数据存放在value中

    串口接收功能2:

    HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1);//程序不会在这个语句停留,直接会按照中断方式把接收数据存放在value中,但是这个语句只能使能一次串口中断。所以要在中断服务函数或者回调函数中重新使能

    串口接收功能3:

    if(HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1) != HAL_OK){    //这一句写在main函数的while(1)上面。用于启动程序启动一次中断接收
            HAL_UART_Transmit(&huart2, (uint8_t *)&"ERROR
    ",7,10);    
            while(1);
    } 
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
    {
        HAL_UART_Transmit(&huart2, (uint8_t *)&"
    into HAL_UART_RxCpltCallback
    ",32,0xffff);    //验证进入这个函数了
        HAL_UART_Transmit(&huart2,(uint8_t *)&value,1,0xffff);      //把接收到的数据通过串口发送出去        
        HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,1);        //重新打开串口中断
    }

    串口DMA发送

    DMA的TX要这样设置

        uint8_t txData[] = {"HelloWorld
    "};
        HAL_UART_Transmit_DMA(&huart2,txData,sizeof(txData));//可以通过DMA把数据发出去

     DMA接收

    if(HAL_UART_Receive_DMA(&huart2, (uint8_t *)rxData, sizeof(rxData)-1) != HAL_OK)//main函数while(1)前,启动一次DMA接收
        {
            Error_Handler();
        }

     串口回调函数:

    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle){
        
        uint8_t temp[] = {"
    in Callback
    "};
        HAL_UART_Transmit_DMA(&huart2,temp,sizeof(temp)-1);//可以通过DMA把数据发出去
        
        HAL_UART_Receive_DMA(&huart2, (uint8_t *)rxData, sizeof(rxData)-1);    //重新使能接收    
    }

     main函数while(1)中不断输出rxData值

    HAL_UART_Transmit_DMA(&huart2,rxData,sizeof(rxData)-1);//可以通过DMA把数据发出去
  • 相关阅读:
    QT资料大全
    网络协议及tcp协议详解
    QT和Java的跨平台
    QString转char *
    QT删除整个文件夹
    QT获取linux下的当前用户名
    std::map自定义类型key
    QT程序自启动
    linux下通过命令连接wifi
    Rsync实现文件的同步
  • 原文地址:https://www.cnblogs.com/Mysterious/p/4804188.html
Copyright © 2020-2023  润新知