zoukankan      html  css  js  c++  java
  • ble学习笔记十三-------------ble协议栈之串口收发实验

    串口收发实验 

    simpleBLEPeripheral.c文件添加如下内容

    /*串口实验导入头文件*/

    #include "hal_uart.h"

    //存放读取串口数据的缓冲数组

    static uint8 SerialRxBuf[128]={0};

    //缓冲数据的标志位

    static uint8 RxIndex = 0;

     //函数声明:串口初始化

    void Serial_Init(void);

    由于本实验没有对事件作处理,所以不用在SimpleBLEPeripheral_ProcessEvent()函数中添加实现代码

    /*检查是否有启动设务任务*/

      if ( events & SBP_START_DEVICE_EVT )

      {

             ....

        //初始化串口

    Serial_Init();

    ...

       }

      if ( events & UART_EVENT )

      {

        HalLcdWriteString( (char*)SerialRxBuf, HAL_LCD_LINE_6 );     

        HalUARTWrite(HAL_UART_PORT_0, SerialRxBuf, osal_strlen(SerialRxBuf));

        osal_memset(SerialRxBuf, 0, 128);

        return (events ^ UART_EVENT);

      }

    SimpleBLEPeripheral.c 文件最后添加如下内容 

    /*****************************************************************************

     函 数 名  : SerialCb

     功能描述  串口通讯回调

     输入参数  : uint8 port

                 uint8 events

     输出参数  

     返 回 值  :

     调用函数  :

     被调函数  :

     修改历史      :

      1.日    期   : 2014106

        作    者   :  retacn

        修改内容   新生成函数

    *****************************************************************************/

    //串口实验所用变量

    unsigned char uartbuf[152];

    static void SerialCb( uint8 port, uint8 events )

    {

         if((events & HAL_UART_TX_EMPTY)||( events & HAL_UART_TX_FULL ))  // 发送区满或者空

         {

             return;

         }

         uint16 usRxBufLen = Hal_UART_RxBufLen(HAL_UART_PORT_0);  // 读取接收据量

         if(usRxBufLen)

         {

             usRxBufLen = MIN(128,usRxBufLen);

             uint16 readLen = HalUARTRead(HAL_UART_PORT_0, &SerialRxBuf[RxIndex], usRxBufLen);   // 读取数据到缓冲区

             RxIndex += readLen;

             readLen %= 128;

            osal_start_timerEx(simpleBLEPeripheral_TaskID, UART_EVENT, 5);  // 启动定时器

         }

    }

    /*****************************************************************************

     函 数 名  : Serial_Open

     功能描述  打开串口

     输入参数  : taskId 任务ID

     输出参数  

     返 回 值  : static

     调用函数  :

     被调函数  :

     修改历史      :

      1.日    期   : 2014106

        作    者   :  retacn

        修改内容   新生成函数

    *****************************************************************************/

    static void Serial_Init(void)

    {

        halUARTCfg_t SerialCfg = {0};

        SerialCfg.baudRate = HAL_UART_BR_115200;    // 波特率

        SerialCfg.flowControl = HAL_UART_FLOW_OFF;  // 流控制

        SerialCfg.callBackFunc = SerialCb;          // 回调函数

        SerialCfg.intEnable    = TRUE;

        SerialCfg.configured   = TRUE;

        HalLcdWriteString( "Open Uart0", HAL_LCD_LINE_5 );    // 在第5行显示启动信息

        HalUARTOpen(HAL_UART_PORT_0, &SerialCfg);

        HalUARTWrite(HAL_UART_PORT_0, "Hello MT254xBoard ", osal_strlen("Hello MT254xBoard "));

    }

    SimpleBLEPeripheral.h头文件中添加

    #define UART_EVENT                                        0x0004

    查看函数或函数的定义,右击函数名go to definition

    实例测试

  • 相关阅读:
    读写分离,就该这么改进
    使用HttpHandler来监控HTML页面请求
    半DDD架构 1
    WebForm开发中的路由功能
    如何让代码可测试化(C#)
    ParamQuery(jQuery Grid Plugin PQGrid, jQuery插件)
    通用Login功能自动化测试
    Top 10 Security Issue Solution
    KO学习重点
    OWASP Top 10 – 2013, 最新十大安全隐患(ASP.NET解决方法)
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194242.html
Copyright © 2011-2022 走看看