本篇博文最后修改时间:2017年03月24日,14:34。
一、简介
本文简介如何在simpleBLEperipheral工程中使用串口。
二、实验平台
协议栈版本:ble_cc26xx_2_01_00_44423
编译软件:IAR Embedded Workbench for ARM Version 7.40
硬件平台:CC26xxDK开发板
仿真器:XDS100V3(香瓜)
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:[email protected]
香瓜BLE之CC2541群:127442605
香瓜BLE之CC2640群:557278427
香瓜BLE之Android群:541462902
香瓜单片机之STM8/STM32群:164311667
香瓜单片机之Linux群:512598061
香瓜单片机之职场交流群:450154342
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
四、 实验前提 1、在进行本文步骤前,请先 阅读 以下博文: 暂无
2、在进行本文步骤前,请先 实现以下博文:
暂无
五、基础知识
暂无
六、实验步骤
1、编写并添加串口驱动
1)写一个串口驱动GUA_Uart.c(存放在“……\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\Source\Application\GUA”路径下)
//******************************************************************************
//name: GUA_Uart.c
//introduce: 香瓜的串口驱动
//author: 甜甜的大香瓜
//email: [email protected]
//QQ group 香瓜BLE之CC2640(557278427)
//changetime: 2017.03.24
//******************************************************************************
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Queue.h>
#include <string.h>
#include <stdio.h>
#include "hci_tl.h"
#include "../../npi/inc/npi_tl_uart.h"
#include "GUA_Uart.h"
/*********************宏定义************************/
#ifndef U8
typedef unsigned char U8;
#endif
#ifndef U16
typedef unsigned short U16;
#endif
/*********************内部变量************************/
static GUA_8 sbGUA_RxBuf[256];
static GUA_8 sbGUA_TxBuf[256];
/*********************内部函数************************/
static void GUA_UART_CallBack(GUA_U16 rxLen, GUA_U16 txLen);
//******************************************************************************
//name: GUA_UART_WriteTransport
//introduce: 香瓜的串口驱动写函数
//parameter: str:发送的数据
// len:数据长度
//return: none
//author: 甜甜的大香瓜
//email: [email protected]
//QQ group 香瓜BLE之CC2640(557278427)
//changetime: 2017.03.24
//******************************************************************************
void GUA_UART_WriteTransport(GUA_U8 *pGUA_Str, GUA_U8 nGUA_Len)
{
memset(sbGUA_TxBuf, 0, sizeof(sbGUA_TxBuf));
memcpy(sbGUA_TxBuf, pGUA_Str, nGUA_Len);
NPITLUART_writeTransport(nGUA_Len);
}
//******************************************************************************
//name: GUA_UART_CallBack
//introduce: 香瓜的串口驱动回调函数
//parameter: rxLen:接收数据长度
// txLen:发送数据长度
//return: none
//author: 甜甜的大香瓜
//email: [email protected]
//QQ group 香瓜BLE之CC2640(557278427)
//changetime: 2017.03.24
//******************************************************************************
static void GUA_UART_CallBack(GUA_U16 nGUA_RxLen, GUA_U16 nGUA_TxLen)
{
//如果有接收数据,则处理
if(nGUA_RxLen > 0)
{
//将接收到的数据发出去
sprintf(sbGUA_TxBuf, sbGUA_RxBuf, nGUA_RxLen);
NPITLUART_writeTransport(nGUA_RxLen);
}
}
//******************************************************************************
//name: GUA_UART_WriteTransport
//introduce: 香瓜的串口驱动写函数
//parameter: str:发送的数据
// len:数据长度
//return: none
//author: 甜甜的大香瓜
//email: [email protected]
//QQ group 香瓜BLE之CC2640(557278427)
//changetime: 2017.03.24
//******************************************************************************
void GUA_UART_Init(void)
{
//初始化
NPITLUART_initializeTransport(sbGUA_RxBuf, sbGUA_TxBuf, GUA_UART_CallBack);
//打印Hello GUA
sprintf(sbGUA_TxBuf, "Hello GUA\n");
NPITLUART_writeTransport(strlen(sbGUA_TxBuf));
}
2)写一个串口驱动头文件GUA_Uart.h(存放在“……\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\Source\Application\GUA”路径下)
//******************************************************************************
//name: GUA_Uart.h
//introduce: 香瓜的串口驱动的头文件
//author: 甜甜的大香瓜
//email: [email protected]
//QQ group 香瓜BLE之CC2640(557278427)
//changetime: 2017.03.24
//******************************************************************************
#ifndef _GUA_UART_H_
#define _GUA_UART_H_
/*********************宏定义************************/
//类型宏
#ifndef GUA_U8
typedef unsigned char GUA_U8;
#endif
#ifndef GUA_8
typedef signed char GUA_8;
#endif
#ifndef GUA_U16
typedef unsigned short GUA_U16;
#endif
#ifndef GUA_16
typedef signed short GUA_16;
#endif
#ifndef GUA_U32
typedef unsigned long GUA_U32;
#endif
#ifndef GUA_32
typedef signed long GUA_32;
#endif
#ifndef GUA_U64
typedef unsigned long long GUA_U64;
#endif
#ifndef GUA_64
typedef signed long long GUA_64;
#endif
/*********************函数声明************************/
extern void GUA_UART_Init(void);
extern void GUA_UART_WriteTransport(GUA_U8 *pGUA_Str, GUA_U8 nGUA_Len);
#endif
3)工程中添加 GUA_Uart .c和 GUA_Uart .h

4)在IAR设置中添加串口驱动源文件路径
$PROJ_DIR$/../../../Source/Application/GUA
2、工程中添加协议栈提供的串口接口文件
路径在"……\ble_cc26xx_2_01_00_44423\Components\npi"
3、修改工程的设置的预编译部分 1)选择非低功耗模式
xPOWER_SAVING
2)开启串口宏
NPI_USE_UART
4、应用层调用(simpleBLEperipheral.c中) 1)添加头文件
//GUA
#include "GUA_Uart.h"
2)添加初始化函数(SimpleBLEPeripheral_init函数中)
//串口初始化
GUA_UART_Init();
七、注意事项
暂无
八、实验结果