打印
[CC2640]

CC2640之自定义周期事件

[复制链接]
465|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晓伍|  楼主 | 2019-12-31 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、简介

本文以SimpleBLEPeripheral工程为例,介绍如何使用系统提供的定时器执行一个自定义的周期事件。



二、实验平台

协议栈版本:ble_cc26xx_2_01_00_44423

编译软件:IAR Embedded Workbench for ARM Version 7.40

硬件平台:CC26xxDK开发板

仿真器:XDS100V3(香瓜)


使用特权

评论回复

相关帖子

沙发
晓伍|  楼主 | 2019-12-31 14:38 | 只看该作者
实验步骤

1、定义周期事件

1)定义周期事件的宏(simpleBLEPeripheral.c中)

#define SBP_GUA_PERIODIC_EVT                  0x0020    //香瓜周期事件

2)添加周期事件的处理(simpleBLEPeripheral.c的SimpleBLEPeripheral_taskFxn中)

    //香瓜周期事件
    if (events & SBP_GUA_PERIODIC_EVT)
    {
      events &= ~SBP_GUA_PERIODIC_EVT;

      //再次启动定时器
      Util_startClock(&GUA_periodicClock);

      //香瓜周期处理函数
      GUA_performPeriodicTask();
    }  
放在其他事件之后即可。


2、定义及声明周期事件的处理函数(simpleBLEPeripheral.c中)

1)定义周期事件的处理函数

//******************************************************************************            
//name:             GUA_performPeriodicTask           
//introduce:        周期事件的处理函数      
//parameter:        none               
//return:           none         
//author:           甜甜的大香瓜                 
//email:            897503845@qq.com     
//QQ group          香瓜BLE之CC2640(557278427)                  
//changetime:       2016.08.28                     
//******************************************************************************
static void GUA_performPeriodicTask(void)
{

}
这里没做任何处理,可自行添加如LED闪烁、串口打印等,方便查看现象。


2)声明周期事件的处理函数

static void GUA_performPeriodicTask(void);

3、初始化定时器
1)定义定时器结构体数据(simpleBLEPeripheral.c中)

//GUA
static Clock_Struct GUA_periodicClock;

2)设置定时时间(simpleBLEPeripheral.c中)

//GUA
#define SBP_GUA_PERIODIC_EVT_PERIOD           3000      //香瓜定时时间
这里设置为3000ms。

3)初始化定时事件(simpleBLEPeripheral.c的SimpleBLEPeripheral_init中)


  //初始化定时器
  Util_constructClock(&GUA_periodicClock, SimpleBLEPeripheral_clockHandler,
                      SBP_GUA_PERIODIC_EVT_PERIOD, 0, false, SBP_GUA_PERIODIC_EVT);

  //启动定时器
  Util_startClock(&GUA_periodicClock);  
注意一个是定时器初始化函数,另一个是启动定时器函数。必须两个都有,定时器才能被启动起来。

simpleBLEPeripheral工程默认一上电虽然进行了定时器初始化,而启动定时器放在连接回调事件中,因此只有连接之后才会执行工程中默认的定时器周期函数。




使用特权

评论回复
板凳
晓伍|  楼主 | 2019-12-31 14:39 | 只看该作者

实验结果

设置断点在周期事件中,仿真查看,可发现约3S进一次事件。


因此,实验成功。


使用特权

评论回复
地板
coshi| | 2020-1-6 12:02 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
nawu| | 2020-1-6 12:52 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
qcliu| | 2020-1-6 12:53 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
tfqi| | 2020-1-6 12:55 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
wiba| | 2020-1-6 12:57 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
9
zljiu| | 2020-1-6 13:01 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

4143

帖子

1

粉丝