FreeRTOS系统内核控制函数

FreeRTOS系统内核函数预览

taskYIELD(); //任务切换
taskENTER_CRITICAL() //进入临界区,用于任务中
taskEXIT_CRITICAL() //退出临界区,用于任务中
taskENTER_CRITICAL_FROM_ISR() //进入临界区,用于中断服务函数中
taskEXIT_CRITICAL_FROM_ISR() //退出临界区,用于中断服务函数中
taskDISABLE_INTERRUPTS() //关闭中断
taskENABLE_INTERRUPTS() //打开中断
vTaskStartScheduler() //开启任务调度器
vTaskEndScheduler() //关闭任务调度器
vTaskSuspendAll() //挂起任务调度器
xTaskResumeAll() //恢复任务调度器
vTaskStepTick() //设置系统节拍值

FreeRTOS系统内核函数详解

taskYIELD(); //任务切换


#define portYIELD()																\
{
   																				\
	/* Set a PendSV to request a context switch. */								\
	portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;								\
																				\
	/* Barriers are normally not required but do ensure the code is completely	\
	within the specified behaviour for the architecture. */						\
	__dsb( portSY_FULL_READ_WRITE );											\
	__isb( portSY_FULL_READ_WRITE );											\
}

taskENTER_CRITICAL() //进入临界区,用于任务中
taskEXIT_CRITICAL() //退出临界区,用于任务中
taskENTER_CRITICAL_FROM_ISR() //进入临界区,用于中断服务函数中
taskEXIT_CRITICAL_FROM_ISR() //退出临界区,用于中断服务函数中
taskDISABLE_INTERRUPTS() //关闭中断
taskENABLE_INTERRUPTS() //打开中断

vTaskStartScheduler() //开启任务调度器

在这里插入代码片void vTaskStartScheduler( void )
{
   
BaseType_t xReturn;

	/* Add the idle task at the lowest priority. */
	#if( configSUPPORT_STATIC_ALLOCATION == 1 )
	{
   
		StaticTask_t *pxIdleTaskTCBBuffer = NULL;
		StackType_t *pxIdleTaskStackBuffer = NULL;
		uint32_t ulIdleTaskStackSize;

		/* The Idle task is created using user provided RAM - obtain the
		address of the RAM then create the idle task. */
		vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize ); /*创建空闲任务*/
		xIdleTaskHandle = xTaskCreateStatic(	prvIdleTask,
												"IDLE",
												ulIdleTaskStackSize,
												( void * ) NULL,
												( tskIDLE_PRIORITY | portPRIVILEGE_BIT ),
												pxIdleTaskStackBuffer,
												pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */

		if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值