博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第四件事就是 修改第三件事信号量超时改为 事件 超时,并增加 事件控制 ,用于控制LED 闪烁时间或者关闭...
阅读量:6070 次
发布时间:2019-06-20

本文共 3534 字,大约阅读时间需要 11 分钟。

/* * data_process.c * *  Created on: 2018年7月5日 *      Author: admin */#include "board_led.h"#include "board_uart.h"#include "data_process.h"// Task configuration#define LF_TASK_PRIORITY      1#define LF_TASK_STACK_SIZE   512// Task configurationTask_Struct lfTask;Char lfTaskStack[LF_TASK_STACK_SIZE];Event_Handle eventLedFickerHandle;/********************************************************************* * @fn      LedFicker_createTask * * @brief   Task creation function for the led ficker. * * @param   None. * * @return  None. */void LedFicker_createTask(void){  Task_Params taskParams;  // Configure task  Task_Params_init(&taskParams);  taskParams.stack = lfTaskStack;  taskParams.stackSize = LF_TASK_STACK_SIZE;  taskParams.priority  = LF_TASK_PRIORITY;  Task_construct(&lfTask, LedFicker_taskFxn, &taskParams, NULL);}/********************************************************************* * @fn      LedFicker_taskFxn * * @brief   Application task entry point for the Led Ficker. * * @param   a0, a1 - not used. * * @return  None. */static void LedFicker_taskFxn(UArg a0, UArg a1){
/* LED 闪烁任务,默认200ms闪烁一次,可以通过事件通知的方式更改LED闪烁频率 */ uint32_t events; uint32_t timeoutInTicks = 200 * (1000/Clock_tickPeriod); Event_Params eventParams; Event_Struct structEvent; /* Memory allocated at build time */ Event_Params_init(&eventParams); Event_construct(&structEvent, &eventParams); /* It's optional to store the handle */ eventLedFickerHandle = Event_handle(&structEvent); if (eventLedFickerHandle == NULL) { /* PIN_open() failed */ bspDebugPrintf( true,"eventLedFickerHandle Init false.\r\n" ); while (1); } else { bspDebugPrintf( true,"eventLedFickerHandle Init ok.\r\n" ); } // Application main loop for (;;) { /* Wait for an event to be posted */ events = Event_pend(eventLedFickerHandle, Event_Id_NONE, LED_FICKER_OFF_EVT | LED_FICKER_100MS_EVT | LED_FICKER_1S_EVT, timeoutInTicks); //翻转LED灯 ledBoardToggle( ledBlueBoard ); ledBoardToggle( ledRedBoard ); if (events & LED_FICKER_OFF_EVT) { timeoutInTicks = BIOS_WAIT_FOREVER;/* 超时时间改为永久,这样就关闭了LED */ //关闭LED灯 ledBoardOff( ledBlueBoard ); ledBoardOff( ledRedBoard ); } if (events & LED_FICKER_100MS_EVT) { timeoutInTicks = 100 * (1000/Clock_tickPeriod);/* 超时时间改为100ms,这样LED就会100ms翻转一次 */ } if (events & LED_FICKER_1S_EVT) { timeoutInTicks = 1000 * (1000/Clock_tickPeriod);/* 超时时间改为1s,这样LED就会1s翻转一次 */ } }}void eventLedFicker_post( uint32_t event ){ if( eventLedFickerHandle ) Event_post(eventLedFickerHandle, event);}
/* * data_process.h * *  Created on: 2018年7月5日 *      Author: admin */#ifndef APPLICATION_DATA_PROCESS_H_#define APPLICATION_DATA_PROCESS_H_#include 
#include
#include
#include
#define LED_FICKER_OFF_EVT Event_Id_00 /* led 闪烁关闭 */#define LED_FICKER_100MS_EVT Event_Id_01 /* led 100MS 闪烁一次 */#define LED_FICKER_1S_EVT Event_Id_02 /* led 1S 闪烁一次 */void LedFicker_createTask(void);static void LedFicker_taskFxn(UArg a0, UArg a1);void eventLedFicker_post( uint32_t event );#endif /* APPLICATION_DATA_PROCESS_H_ */

 

转载于:https://www.cnblogs.com/suozhang/p/9269427.html

你可能感兴趣的文章
RHEL5安装Oracle10gRAC on VMware Server1.0之八
查看>>
软件测试资料大汇总
查看>>
php 函数索引 中文索引
查看>>
在CMD命令行中运行py文件
查看>>
在Linux上搭建samba服务后,到Windos上访问不了共享目录的问题排障
查看>>
构建最小尺寸XPE
查看>>
Asp.net常用的三十多个代码(1)
查看>>
Linux磁盘管理--LVM原理及基本操作
查看>>
Struts2 中测试 action
查看>>
Oracle BRM
查看>>
反射机制详解下篇
查看>>
年中总结
查看>>
Using a SecureCRT® Secure Shell Connection as a SOCKS Proxy
查看>>
MySQL源码学习:MDL字典锁
查看>>
sst15vf016bFlash芯片的驱动基于msp430F149单片机
查看>>
linux下主从节点互相免密匙登陆
查看>>
nginx url重写
查看>>
eval
查看>>
C++,笔试面试,使用C++编程,实现万年历
查看>>
string类(c++)
查看>>