BLE4.0 学历笔记1之串口体验

  PS:这篇文章记录笔者TI ble协议栈的学习串口的笔记。

  前些日子CC2540模块没到,就捣鼓CC2530。深深的感受到,ZigBee就是个坑啊。然后果断玩BLE了。BLE,TI的栈给的文档,project这回看起来好点,然后找了其他一些资料。这里介绍《蓝牙4.0BLE开发完全手册-物联网开发技术实战》。看起来还行吧。不过我照着他的串口例子做,没看到效果(可能是协议栈版本问题)。于是,一怒之下,自己啃。

  最后再说一下,CC2530和CC2540除了RF不同外,51内核是一样的。因为栈中使用的HAL是一样的。

  说下自己的装备。如下图。手焊跳线o(∩_∩)o。主要可以用的IO有串口0,定时器1的通道0~3,定时器的IO映射到了位置2。和两个按键。

  先来看看HAL都给了啥。我个人认为key、led、lcd就是多余的。这个硬件相关性实在是太强了。所以先从串口开始看起,我想各位看官的串口也都在位置1吧。

HAL里面默认串口使用的DMA。这个就不管它了。我建议先简单的看下APP Group下面的几个c文件。和OSAL.C中的osal_init_system和osal_run_system两个函数,其它最好也浏览一下。在开始写我们自己的串口函数前先看看项目的配置情况。请注意下,函数中用很多预编译,看的时候仔细点。

左上角,选择CC2540,关掉POWER_SAVING,在defined symbols中的POWER_SAVING前面加个x就可以了。关于POWER_SAVING,在函数osal_run_system中可以看到,这里我们x掉,不然编译会出现一个警告,说什么串口和key的中断被重复的啥啥啥的。至于LCD,因为我的板是没用LCD的干脆也x了。

  现在开始来看看怎么来串口打印出信息来。找到SimpleBLEPeripheral.c中的SimpleBLEPeripheral_Init函数,添加如下代码,注意{}中才是我添加的。另外要添加hal_uart.h这个头文件。

 1 void SimpleBLEPeripheral_Init( uint8 task_id )
 2 {
 3   simpleBLEPeripheral_TaskID = task_id;
 4
 5     {    //add
 6         halUARTCfg_t halUARTCfg;
 7         halUARTCfg.configured            =    TRUE;
 8         halUARTCfg.baudRate                = HAL_UART_BR_115200;
 9         halUARTCfg.flowControl        =    HAL_UART_FLOW_OFF;
10
11         HalUARTOpen(HAL_UART_PORT_0, &halUARTCfg);
12         HalUARTWrite(HAL_UART_PORT_0, "Hello CC2540!\n", 14);
13     }

添加串口

来看看串口配置这个结构体。注意到,这个结构体是没有关于配置停止位,校验位的。也就是全是默认。其他没用到的先不理会是用来干嘛的。

 1 typedef struct
 2 {
 3   bool                configured;
 4   uint8               baudRate;
 5   bool                flowControl;
 6   uint16              flowControlThreshold;
 7   uint8               idleTimeout;
 8   halUARTBufControl_t rx;
 9   halUARTBufControl_t tx;
10   bool                intEnable;
11   uint32              rxChRvdTime;
12   halUARTCBack_t      callBackFunc;    //回调函数
13 }halUARTCfg_t;

halUARTCfg_t

顺便吐槽一下,TI给的HAL api文档里面关于串口的宏定义有错,所以还是看源码靠谱点。

到这里,编译烧录,应该就可以看到串口出来的信息了。附图,注意一下右边的配置情况。



华丽的分割线


时间: 2024-10-20 09:04:26

BLE4.0 学历笔记1之串口体验的相关文章

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

[开发笔记]-Jqplot图表初体验

文章内容为初次使用Jqplot图表插件的测试代码,仅供参考. <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <link href="js/jqpl

Linux 程序设计学习笔记----终端及串口编程及实例应用

转载请注明出处,http://blog.csdn.net/suool/article/details/38385355. 部分内容类源于网络. 终端属性详解及设置 属性 为了控制终端正常工作,终端的属性包括输入属性.输出属性.控制属性.本地属性.线路规程属性以及控制字符. 其在系统源代码的termios.h中定义(具体的说明文档http://pubs.opengroup.org/onlinepubs/7908799/xsh/termios.h.html),其结构体成员主要是 Thetermios

Effective Objective-C 2.0重读笔记---1

上次看这本书的时候匆匆走了一遍,最近不太忙,重温了一遍,把笔记写出来~.. 有兴趣的可以去买一本,感觉这本书还是挺不错的 由于大部分是在坐车的时候用手机写的,所以代码很少,图也很少 1. 尽量使用向前声明,延后引入头文件的时间,这样可以减少编译时间2. 使用arraywithobjects:....如果遇到为空的变量,就会自动终止,后面的变量便会添加不上,切不会报错,会造成数据不一致问题,所以尽量使用字面量语法创建相关对象,减少出错且减少代码量3. 使用字面量创建的对象都是不可变的,如果要获得可

IOS BLE4.0蓝牙和外设连接和收发数据的流程

前言: 苹果在IOS 6系统之后开始支持BLE 4.0,iPhone4s,iPod 5,iPad 3等之后的机型开始内嵌BLE4.0硬件,因此在开发前请先确认你的开发环境符合上述要求,并且苹果在BLE4.0之后,对外部的连接设备已经不在需要MFI认证了,当然你的外设肯定得要有蓝牙4.0模块了 综述: 开发BLE4.0的App,你需要在你的项目里面导入框架: CoreBluetooth.framework 在需要使用到蓝牙的文件里面你需要导入头文件: #import <CoreBluetooth/

微软企业库5.0学习笔记(10)ASP.NET模块依赖注入

您可以使用HTTP模块,一个到ASP.NET HttpApplicationState类的扩展,在Global.asax编写代码强制ASP.NET在每一个页面请求时自动注入依赖的对象,就像在ASP.NET Web窗体应用程序中讨论的一样. 下列方法显示了一个合适的方法能够获取PreRequestHandlerExecute事件将它自己注入到ASP.NET的执行流水线,在每个页面请求中通过容器的BuildUp方法运行Http模块,并获取OnPageInitComplete事件.当OnPageIni

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记 这本书年初刷完,感觉不错,介绍了很多小点,都是平日不怎么关注的. 第1章 熟悉Objective-C 这章没什么好介绍 第1条:了解Objective-C语言的起源 第2条:在类的头文件中尽量少引入其他头文件 第3条:多用字面量语法,少用与之等价的方法 第4条:多用类型常量,少用#define预处理指令 要理解为啥要少用#define预处理指令. 然后具体用哪个, 自己定吧 第5条:用枚举表示状态.选项.状态

firefox os 2.0版模拟器上QQ初体验

对于firefox os 爱好者而言,firefox os 手机迟迟没在中国上市会感到些许遗憾,但我们要相信firefox os 登陆中国是迟早的事,腾讯QQ已经登陆firefox os 应用市场,今天我们就从模拟器上感受一番腾讯QQ,想体验的爱好者们可以参考安装模拟器抢先体验一番! 下载安装QQ 安装. 安装完成 登陆界面; 聊天界面 喜欢的盆友快去试试吧!!!   编辑(5狐网)firefox os 2.0版模拟器上QQ初体验,布布扣,bubuko.com