1.创建任务
portBASE_TYPE xTaskCreate(pdTASK_CODE pvTaskCode,const signed portCHAR * const pcName,unsigned portSHORT usStackDepth,void *pvparameters.unsigned portBASE_TYPE uxPriority,xTaskHandle *pxCreatedTask);
函数参数描述:
pvTaskCode:是一个指向任务的实现函数的指针。
pcName:具有描述性的任务名。
usStackDepth:用于告诉内核为它分配多大的栈空间,一般通过定义常量来决定空闲任务的栈空间大小。
pvParameters:接受一个指向void 的指针(void *).pvParameters的值是传递到任务中的值。
uxPriority:任务执行优先级
pxCreatedTask:用于传出任务的句柄。
返回值:1.pdTRUE创建成功。2.errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
内存堆空间创建不足
2.启动调度器,任务开始执行
vTaskStartScheduler();
for(;;);
2.1停止实时内核运行
void vTaskEndScheduler ( void )
3.挂起和唤醒
挂起:vTaskSuspend(); 让一个任务进入挂起状态
唤醒:vTaskResume() 或 vTaskResumeFromISR(); 唤醒任务
FreeRTOSConfig.h 中的INCLUDE_vTaskSuspend 为1
4.切换任务
taskYIELD();
通知调度器现在就切换到其他任务,而不必等到本任务的时间片耗尽。
5.阻塞态实现延迟
void vTaskDelay(portTickType xTicksToDelay);
函数形参描述:
xTicksToDelay:延迟多少个心跳周期。
常数portTICK_RATE_MS用来将毫秒为单位的时间值转换为以心跳周期为单位的时间值
说明:FreeRTOSConfig.h 中的INCLUDE_vTaskDelay=1,这个函数才能用
void vTaskDelayUntil(portTickType * pxpreviousWakeTime,portTickType xTimeIncrement);
函数形参描述:

762

被折叠的 条评论
为什么被折叠?



