|
背景介绍 FreeRTOS 以其移植方便,高度可定制,footprint 小,使其在嵌入式操作系统中的份额不容小觑!尤以免费license,颇受开发者青睐。 问题描述 客户在基于cortex-m3 的平台上使用FreeRTOS 系统提供的定时器功能时,意外发现定时器的精确度不够高。譬如,设置1 秒钟的定时器,理论上1 秒超时,并且执行相应的回调函数。但是调试却发现,有时回调函数是在1.4 秒后被执行!这对于精度要求较高的实时系统,是不能接受的! 问题复现与分析 首先在stm32f407-discovery 平台移植FreeRTOS,并创建一个定时器,在其回调函数里toggle led 灯,并测量被执行的时间。鉴于FreeRTOS 是一个多任务可抢占式系统,这个问题需要在多种情况下分析。 Case 1 : 单任务,即系统里仅有timer task 和idle task。整个系统最高优先级为4,Timer task 的优先级为默认优先级2。 在这种环境下,回调函数能精确的以1 秒的时长超时执行回调函数。虽然此刻精度能满足要求,但是实际的系统一般会包含多个task。以下为测试的日志,显而易见,该定时器严格1 秒钟超时。 详细专家解答请下载PDF文档: FreeRTOS定时器精度研究 更多实战经验请见:https://www.stmcu.org.cn/document/list/index/category-657 |
| 对,频率最高才1KHZ,看看专家的意见。 |
| 学习了。 |
| 不知道有没有出Free RTOS的系列视频啊。以便大家学习呀。 |
| 学习了 |
|
freeRTOS 视频资料https://pan.baidu.com/s/1qXF2alQ?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0#list/path=%2F |
| https://pan.baidu.com/s/1qXF2alQ ... ror=0#list/path=%2F |
微信公众号
手机版