书签 分享 收藏 举报 版权申诉 / 23

类型由浅入深蓝牙40BLE协议栈开发攻略大全3.docx

  • 文档编号:14368829
  • 上传时间:2023-06-22
  • 格式:DOCX
  • 页数:23
  • 大小:547.91KB

left;”>

voidosal_run_system(void)

  {

  uint8idx=0;

  #ifndefHAL_BOARD_CC2538

  osalTimeUpdate();//定时器更新

  #endif

  Hal_ProcessPoll();//Hal层信息处理

  do{

  if(tasksEvents[idx])//Taskishighestprioritythatisready.

  {

  break;

  }

  }while(++idx

  if(idx

  {

  uint16events;

  halIntState_tintState;

  HAL_ENTER_CRITICAL_SECTION(intState);//进入临界区

  events=tasksEvents[idx];

  tasksEvents[idx]=0;//CleartheEventsforthistask.清除事件标志

  HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区

  activeTaskID=idx;

  events=(tasksArr[idx])(idx,events);//执行事件处理函数

  activeTaskID=TASK_NO_TASK;

  HAL_ENTER_CRITICAL_SECTION(intState);//进入临界区

  tasksEvents[idx]|=events;//Addbackunprocessedeventstothecurrenttask.

  HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区

  }

  #ifdefined(POWER_SAVING)//没有事件发生,并且开启了低功耗模式

  else//Completepassthroughalltaskeventswithnoactivity?

  {//系统进入低功耗模式

  osal_pwrmgr_powerconserve();//Puttheprocessor/systemintosleep

  }

  #endif

  /*Yieldincasecooperativeschedulingisbeingused.*/

  #ifdefined(configUSE_PREEMPTION)&&(configUSE_PREEMPTION==0)

  {

  osal_task_yield();

  }

  #endif

  }

  在这里可以看到这个OSAL的核心,整个OSAL通过检测每个任务是否有事件发生,如果有则执行相应的任务,处理相应的事件。

如果没有事件需要处理并且开启了低功耗模式,则系统就会进入低功耗模式。

  这里有一个很关键的地方,OSAL是如何知道哪个事件需要哪个任务来处理呢?

  events=(tasksArr[idx])(idx,events);//执行事件处理函数

  我们看这里有一个很关键的数组tasksArr,很显然,这是一个函数指针数组,我们看看它的定义。

  constpTaskEventHandlerFntasksArr[]=

  {

  LL_ProcessEvent,//task0

  Hal_ProcessEvent,//task1

  HCI_ProcessEvent,//task2

  #ifdefined(OSAL_CBTIMER_NUM_TASKS)

  OSAL_CBTIMER_PROCESS_EVENT(osal_CbTimerProcessEvent),//task3

  #endif

  L2CAP_ProcessEvent,//task4

  GAP_ProcessEvent,//task5

  GATT_ProcessEvent,//task6

  SM_ProcessEvent,//task7

  GAPRole_ProcessEvent,//task8

  GAPBondMgr_Pro

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
由浅入深 蓝牙 40 BLE 协议 开发 攻略 大全
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:由浅入深蓝牙40BLE协议栈开发攻略大全3.docx
链接地址:https://www.bingdoc.com/p-14368829.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开