博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uCOS:时钟节拍代码追踪
阅读量:5855 次
发布时间:2019-06-19

本文共 1005 字,大约阅读时间需要 3 分钟。

uCos中的时钟节拍可以基于软中断实现或者基于时钟节拍任务(但是这个任务要给予很高的优先级)
对于STM32(Cortex-M3)来说这个就是SysTick中断0x0000003C
当中断发生时调用OS_CPU_SysTickHandler函数,
这样就提供了系统的时钟节拍
 
uCos中扩展的应用都是在HOOK函数中实现的,
程序关于Time的调用,
首先都是基于OSTime的,
 
其次由于在OSTimeTick函数中预留了OSTimeTickHook()函数
这样可以方便我们在OSTimeTickHook()函数中添加我们自己的代码实现在系统中的调用
由于OSTimeTickHook()函数在OSTimeTick函数中,
所以每次Tick时都会调用这个函数,所以也就给了我们可以添加每次时钟Tick都被系统
调用的机会。
由于OSTimeTickHook()函数中预留了App_TimeTickHook()函数提供给应用层的程序实现相应的扩充,
这样就可以在应用层APP中,扩展一些我们想要的功能,例如Ctimer函数。
同时函数指针的应用更大程度的扩展了,我们可以扩展函数的功能的范围。
 
在系统启动多任务后
的第一个任务TaskStart中(即调用过OSStart()函数后)调用OS_CPU_SysTickInit()完成对系统Tick的设定。
在设置Tick的时候,是由OS_CPU_SysTickClkFreq函数来获得硬件的时钟频率
通过除以OS_TICKS_PER_SEC得到一个定时中断时间,以后每隔一定的时间中断一次。
 
追踪的过程
App_TimeTickHook()(app.c)--OSTimeTickHook()(os_cpu_c.c)--OSTimeTick()(cpu_core.c) \
--OS_CPU_SysTickHandler()(os_cpu_c.c)--DCD OS_CPU_SysTickHandler(vectors.s)
 
在追寻代码路径的过程中,
沿着最容易看到的代码追踪到它的上一级代码,
直到它的最底层实现,
这样就可以把与这个相关的系统上的东西都可以了解了。
 
参考:
《嵌入式实时操作系统uC/OS-2 》

转载于:https://www.cnblogs.com/skl374199080/archive/2013/05/30/3107716.html

你可能感兴趣的文章
FastD 最佳实践一: 构建 API
查看>>
Mycat安装以及使用测试
查看>>
react、react-router、redux 也许是最佳小实践1
查看>>
JS里验证信息
查看>>
Scott Guthrie访谈:定制仪表板与Azure Monitor
查看>>
Microsoft Quantum Katas帮助开发人员探索使用Q#实现量子计算
查看>>
Spark背后公司Databricks获2.5亿融资,估值27.5亿美元
查看>>
Akka actor tell, ask 函数的实现
查看>>
NodeJS的底层通信
查看>>
windows10 chrome 调试 ios safari 方法
查看>>
Java 免费!亚马逊开源 Java SE 发行版的直接替代品 Corretto
查看>>
Hello , Ruby!
查看>>
navigator 应用
查看>>
Netty 4.1.35.Final 发布,经典开源 Java 网络服务框架
查看>>
详解Microsoft.AspNetCore.CookiePolicy
查看>>
go与c互相调用
查看>>
如何优雅地用Redis实现分布式锁
查看>>
程序员的4条忠告,你做到了几条
查看>>
从零开始Docker化你的Node.js应用
查看>>
mybatis模糊查询
查看>>