osal_start_system运行操作系统函数
/*********************************************************************
* @fnosal_start_system
*
* @brief
*
*This function is the main loop function of the task system.It
*will look through all task events and call the task_event_processor()
*function for the task with the event.If there are no events (for
*all tasks), this function puts the processor into Sleep.
*This Function doesn't return.
*
* @paramvoid
*
* @returnnone
*/
注解:这个是任务系统轮询的主要函数。他会查找发生的事件然后调用相应的事件执行函数。如果没有事件登记要发生,那么就进入睡眠模式。这个函数是永远不会返回的。
【osal_start_system运行操作系统函数】
void osal_start_system( void )
{
#if !defined ( ZBIT ) && !defined ( UBIT )
for(;
;
)// Forever Loop
#endif
{
uint8 idx = 0;
osalTimeUpdate();
//扫描哪个事件被触发了,然后置相应的标志位
Hal_ProcessPoll();
// This replaces MT_SerialPoll() and osal_check_timer().do {
if (tasksEvents[idx])// Task is highest priority that is ready.
{
break;
//得到待处理的最高优先级任务索引号idx
}
} while (++idx < tasksCnt);
if (idx < tasksCnt)
{
uint16 events;
halIntState_t intState;
HAL_ENTER_CRITICAL_SECTION(intState);
//进入临界区,保护
events = tasksEvents[idx];
//提取需要处理的任务中的事件
tasksEvents[idx] = 0;
// Clear the Events for this task.清除本次任务的事件
HAL_EXIT_CRITICAL_SECTION(intState);
//退出临界区events = (tasksArr[idx])( idx, events );
///通过指针调用任务处理函数,关键HAL_ENTER_CRITICAL_SECTION(intState);
///进入临界区
tasksEvents[idx] |= events;
// Add back unprocessed events to the current task.保存未处理的事件
HAL_EXIT_CRITICAL_SECTION(intState);
//退出临界区
}
#if defined( POWER_SAVING )
else// Complete pass through all task events with no activity?
{
osal_pwrmgr_powerconserve();
// Put the processor/system into sleep
}
#endif
}
}
推荐阅读
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- 由Uncaught|由Uncaught TypeError: this.player.startMoveAt is not a function引申
- 运行报错Cannot|运行报错Cannot find module '@babel/compat-data/corejs3-shipped-proposals’
- elon's|elon's keywords of 2016
- 360|360 将停止 StartCom 数字证书业务;微软的 Visual Studio Tools for AI 现已提供使用
- C#|C# 文件路径操作
- MySQL|MySQL 语句简单汇总
- Asp.net|System.Globalization.DateTimeFormatInfo.InvariantInfo
- startActivity启动流程的源码学习
- 2019-05-06|2019-05-06 Windows 最高权限(system)