FreeRtos如何使用

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);

函数形参描述:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值