zoukankan      html  css  js  c++  java
  • 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把数据发出去
  • 相关阅读:
    安装win7和ubuntu双系统
    Jenkins的2个问题
    junit里面Test Case的执行顺序
    使用Array类处理基本数组对象
    Location对象的页面跳转方法介绍
    Javascript几种创建对象的方法
    For循环重复代码的重构
    Sonar在ant工程中读取单元测试和覆盖率报告
    Jenkins无法读取覆盖率报告的解决方法
    python之路-day08-文件操作
  • 原文地址:https://www.cnblogs.com/Mysterious/p/4804188.html
Copyright © 2011-2022 走看看