TI 的OSAL做的很不错,不过看起来也挺费劲可能自己水平太差吧,网上买的谷雨的开发板觉得确实挺不错的。
做点学习笔记,首先是记录OSAL里执行的顺序流程,主要是task ,event,message
1,
APP_Main.c:
/* Initialize the operating system */
osal_init_system();
其中初始化了
// Initialize the system tasks.
osalInitTasks();
1 /********************************************************************* 2 * @fn osalInitTasks 3 * 4 * @brief This function invokes the initialization function for each task. 5 * 6 * @param void 7 * 8 * @return none 9 */ 10 void osalInitTasks( void ) 11 { 12 uint8 taskID = 0; 13 14 tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); 15 osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt)); 16 17 /* LL Task */ 18 LL_Init( taskID++ ); 19 20 /* Hal Task */ 21 Hal_Init( taskID++ ); 22 23 /* HCI Task */ 24 HCI_Init( taskID++ ); 25 26 #if defined ( OSAL_CBTIMER_NUM_TASKS ) 27 /* Callback Timer Tasks */ 28 osal_CbTimerInit( taskID ); 29 taskID += OSAL_CBTIMER_NUM_TASKS; 30 #endif 31 32 /* L2CAP Task */ 33 L2CAP_Init( taskID++ ); 34 35 /* GAP Task */ 36 GAP_Init( taskID++ ); 37 38 /* GATT Task */ 39 GATT_Init( taskID++ ); 40 41 /* SM Task */ 42 SM_Init( taskID++ ); 43 44 /* Profiles */ 45 GAPRole_Init( taskID++ ); 46 GAPBondMgr_Init( taskID++ ); 47 48 GATTServApp_Init( taskID++ ); 49 50 /* Application */ 51 SimpleBLEPeripheral_Init( taskID ); 52 }