FreeRTOS学习笔记

本文基于zynq平台分析FreeRTOS源码,探讨了FreeRTOS的定时器实现,其中通过FreeRTOS_SetupTickInterrupt()设置硬件定时器产生Tick,并在xPortStartScheduler()中启动。此外,详细阐述了任务调度过程,特别是在FreeRTOS_IRQ_Handler中,中断执行后会调用vTaskSwitchContext()进行任务切换,选择优先级最高的就绪任务。同时指出,相同优先级的任务会并发执行。
摘要由CSDN通过智能技术生成

看zynq上FreeRTOS源码(版本号freertos823),得出以下结论

1. 定时器

FreeRTOS的定时器肯定离不开硬件定时器,在portZYNQ7000.c中有FreeRTOS_SetupTickInterrupt()函数,使用全局定时器中断产生Tick来计时,其中bsp配置栏中有configTICK_RATE_HZ参数(默认100),即1s内产生100个Tick,而该Tick则由

XScuTimer_LoadTimer( &xTimer, XSCUTIMER_CLOCK_HZ / configTICK_RATE_HZ );

给出,其中XSCUTIMER_CLOCK_HZ即CPU主频。

此外,FreeRTOS_SetupTickInterrupt()函数等同于configSETUP_TICK_INTERRUPT(),会在xPortStartScheduler()中调用,即在vTaskStartScheduler()中调用,因此不开启任务调度前,定时器是不工作的


a.定时器引申

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值