ble学习笔记十三-------------ble协议栈之串口收发实验
2014-10-30 20:50
302 查看
串口收发实验
在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
实例测试
在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
实例测试
相关文章推荐
- ble学习笔记十三-------------ble协议栈之串口收发实验
- ble学习笔记八---------ble协议栈之简介
- ble学习笔记九----------ble协议栈之OSAL的运行机理
- ble学习笔记十二---------------协议栈之UART实验
- ble学习笔记九----------ble协议栈之OSAL的运行机理
- STM32-串口实验学习笔记
- ble学习笔记十二---------------协议栈之UART实验
- 串口实验_STM32F1开发指南_第九章——串口学习笔记
- cortex_m3_stm32嵌入式学习笔记(三):串口实验(串口通信)
- MCSE 2003学习笔记 十三 群集-NLB实验
- ble学习笔记十四---------ble协议栈之按键事件
- ble学习笔记八---------ble协议栈之简介
- ble学习笔记十四---------ble协议栈之按键事件
- 菜鸟学习笔记-----linux下的串口操作 嘿嘿
- GTK+图形化应用程序开发学习笔记(十三)—微调构件(1)
- JavaScript学习笔记(十三)
- 设计模式学习笔记(十三)——Proxy代理模式
- c#学习笔记之串口通信【转】
- 交换学习笔记=++=实验一 计算机和交换机基本设置
- WPF and Silverlight 学习笔记(十三):依赖项属性和路由事件