CC26XX的RTOS定时器任务的建立。
2017-11-03 13:36
363 查看
此前我自己写过一个多线程,相比较于多线程,我个人更推荐多任务。
转自:http://blog.csdn.NET/feilusia
一、简介
本文以SimpleBLEPeripheral工程为例,介绍如何使用系统提供的定时器执行一个自定义的周期事件。
二、实验平台
协议栈版本:ble_cc26xx_2_01_00_44423
编译软件:IAR Embedded Workbench for ARM Version 7.40
硬件平台:CC26xxDK开发板
仿真器:XDS100V3(香瓜)
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:897503845@qq.com
香瓜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)定义周期事件的宏(simpleBLEPeripheral.c中)
[cpp] view
plain copy
#define SBP_GUA_PERIODIC_EVT 0x0020 //香瓜周期事件
2)添加周期事件的处理(simpleBLEPeripheral.c的SimpleBLEPeripheral_taskFxn中)
[cpp] view
plain copy
//香瓜周期事件
if (events & SBP_GUA_PERIODIC_EVT)
{
events &= ~SBP_GUA_PERIODIC_EVT;
//再次启动定时器
Util_startClock(&GUA_periodicClock);
//香瓜周期处理函数
GUA_performPeriodicTask();
}
放在其他事件之后即可。
2、定义及声明周期事件的处理函数(simpleBLEPeripheral.c中)
1)定义周期事件的处理函数
[cpp] view
plain copy
//******************************************************************************
//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)声明周期事件的处理函数
[cpp] view
plain copy
static void GUA_performPeriodicTask(void);
3、初始化定时器
1)定义定时器结构体数据(simpleBLEPeripheral.c中)
[cpp] view
plain copy
//GUA
static Clock_Struct GUA_periodicClock;
2)设置定时时间(simpleBLEPeripheral.c中)
[cpp] view
plain copy
//GUA
#define SBP_GUA_PERIODIC_EVT_PERIOD 3000 //香瓜定时时间
这里设置为3000ms。
3)初始化定时事件(simpleBLEPeripheral.c的SimpleBLEPeripheral_init中)
[cpp] view
plain copy
//初始化定时器
Util_constructClock(&GUA_periodicClock, SimpleBLEPeripheral_clockHandler,
SBP_GUA_PERIODIC_EVT_PERIOD, 0, false, SBP_GUA_PERIODIC_EVT);
//启动定时器
Util_startClock(&GUA_periodicClock);
注意一个是定时器初始化函数,另一个是启动定时器函数。必须两个都有,定时器才能被启动起来。
simpleBLEPeripheral工程默认一上电虽然进行了定时器初始化,而启动定时器放在连接回调事件中,因此只有连接之后才会执行工程中默认的定时器周期函数。
六、实验结果
设置断点在周期事件中,仿真查看,可发现约3S进一次事件。
因此,实验成功。
转自:http://blog.csdn.NET/feilusia
一、简介
本文以SimpleBLEPeripheral工程为例,介绍如何使用系统提供的定时器执行一个自定义的周期事件。
二、实验平台
协议栈版本:ble_cc26xx_2_01_00_44423
编译软件:IAR Embedded Workbench for ARM Version 7.40
硬件平台:CC26xxDK开发板
仿真器:XDS100V3(香瓜)
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:897503845@qq.com
香瓜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)定义周期事件的宏(simpleBLEPeripheral.c中)
[cpp] view
plain copy
#define SBP_GUA_PERIODIC_EVT 0x0020 //香瓜周期事件
2)添加周期事件的处理(simpleBLEPeripheral.c的SimpleBLEPeripheral_taskFxn中)
[cpp] view
plain copy
//香瓜周期事件
if (events & SBP_GUA_PERIODIC_EVT)
{
events &= ~SBP_GUA_PERIODIC_EVT;
//再次启动定时器
Util_startClock(&GUA_periodicClock);
//香瓜周期处理函数
GUA_performPeriodicTask();
}
放在其他事件之后即可。
2、定义及声明周期事件的处理函数(simpleBLEPeripheral.c中)
1)定义周期事件的处理函数
[cpp] view
plain copy
//******************************************************************************
//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)声明周期事件的处理函数
[cpp] view
plain copy
static void GUA_performPeriodicTask(void);
3、初始化定时器
1)定义定时器结构体数据(simpleBLEPeripheral.c中)
[cpp] view
plain copy
//GUA
static Clock_Struct GUA_periodicClock;
2)设置定时时间(simpleBLEPeripheral.c中)
[cpp] view
plain copy
//GUA
#define SBP_GUA_PERIODIC_EVT_PERIOD 3000 //香瓜定时时间
这里设置为3000ms。
3)初始化定时事件(simpleBLEPeripheral.c的SimpleBLEPeripheral_init中)
[cpp] view
plain copy
//初始化定时器
Util_constructClock(&GUA_periodicClock, SimpleBLEPeripheral_clockHandler,
SBP_GUA_PERIODIC_EVT_PERIOD, 0, false, SBP_GUA_PERIODIC_EVT);
//启动定时器
Util_startClock(&GUA_periodicClock);
注意一个是定时器初始化函数,另一个是启动定时器函数。必须两个都有,定时器才能被启动起来。
simpleBLEPeripheral工程默认一上电虽然进行了定时器初始化,而启动定时器放在连接回调事件中,因此只有连接之后才会执行工程中默认的定时器周期函数。
六、实验结果
设置断点在周期事件中,仿真查看,可发现约3S进一次事件。
因此,实验成功。
相关文章推荐
- 《建立一个属于自己的AVR的RTOS》笔记——任务调度对比
- 《建立一个属于自己的AVR的RTOS》笔记——任务切换全过程
- Java 定时器的使用:每天定时执行任务
- Java定时器(二)之Spring定时任务、Quartz实现
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Java定时器周期执行任务的例子
- java 定时器任务
- Asp.net定时执行任务(定时器改良)
- 【iCore3 双核心板_ uC/OS-III】例程二:任务的建立与删除
- 建立一个属于自己的AVR的RTOS(转)
- windows 建立任务执行计划 自动执行脚本
- 计划任务建立范例
- 51操作系统学习笔记(三):建立一个属于自己的AVR的RTOS(1)
- 《建立一个属于自己的AVR的RTOS》笔记——OSStartTask
- 《建立一个属于自己的AVR的RTOS》笔记——时间片轮番调度
- 第十五周上机任务项目1-建立专门的数组类处理有关数组的操作
- 使用Spring定时器定时任务的几种配置方式及示例
- 《第五周任务四》设计学生类,建立对象组,内放5个学生的数据
- project建立子任务
- spring mvc 任务定时器 @Scheduled