您的位置:首页 > 其它

ble学习笔记十三-------------ble协议栈之串口收发实验

2014-10-30 20:50 561 查看
串口收发实验

在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.日 期 : 2014年10月6日

作 者 : 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.日 期 : 2014年10月6日

作 者 : 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\r\n", osal_strlen("Hello MT254xBoard\r\n"));

}

SimpleBLEPeripheral.h头文件中添加

#define UART_EVENT 0x0004

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

实例测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: