uCOS:时钟节拍代码追踪

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学之美番外篇:平凡而又神奇的贝叶斯方法

概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计…

Android之用jadx进行反编译

利用开源项目jadx反编译Android应用 利用Github开源项目jadx可以直接对 .dex, .apk, .jar, .class 类型的文件进行直接反编译对比之前 apktool(解包apk) dex2jar(将.dex转换成.jar) jd-gui (查看.jar文件)反编译三件套, jadx的优点在于: 1. 可以一行命令直接反编译恢复出.…

linux red hat 安装svn

安装步骤如下:1、yum install subversion 2、输入rpm -ql subversion查看安装位置,如下图:我们知道svn在bin目录下生成了几个二进制文件。输入 svn --help可以查看svn的使用方法,如下图。3、创建svn版本库目录mkdir -p /var/svn/s…

RTP在。net中的使用(资料)

开源组件:lumisoft 网址:http://www.lumisoft.ee/lswww/download/downloads/Examples/ 非开源的免费组建:rtp.net (微软推荐)转载于:https://www.cnblogs.com/foreverme/p/3799129.html

如何预热Web API,减少初次执行时间

前言在上次的《差距50倍!为什么Web API第一次执行这么慢?》文章中,我们发现了部分耗时比较大的方法:Microsoft.AspNetCore.Mvc.Infrastructure.ActionInvokerFactory.CreateInvoker - 30.15ms查看源代码,ActionInvoker…

Android之关于电话录音原理,目前的方法还是只能录MIC

对于android来讲,没有API直接支持对电话进行双向录音。虽然MediaRecorder里面可以设置recodeRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);来表示要对双向进行录音,但是这个功能实际是不可使用的,唯一能直接使用的还是VOI…

JavaScript图片库

将图片放到网上的方法有很多,你可以简单地把所有的图片都放到网页上。但是,如果你打算发布的图片过多,这个页面很快会变的过于庞大,而且加上这些图片后用户要下载的的数据量就会变得相当可观。我们必须面对这样一个现实:没有人会等待很长长时间去下载一个网页;所以利…

驰骋表单设计器 设计表单案例演示

为什么80%的码农都做不了架构师?>>> 我们以客户提供如下原始的word表单样本,使用驰骋表单设计器制作表单的过程介绍如下:工业设计和创意需求登记表原始表单图 在ccform表单设计器中,设计如下: 驰骋表单设计器&#xf…

jquery this 与javascript的this

<div class"list"><table><thead><tr><th width"110" rowspan"2">用户名id</th><th width"155" rowspan"2">用户名</th><th width"80" rowspan"2"…

这个避孕套让生活更和谐……

1 三连暴击▼2 开塞露还能这样用&#xff1f;▼3 这真不是打架&#xff1f;▼4 送礼佳品&#xff0c;必拉黑神器&#xff01;▼5 孩子&#xff1a;爹妈&#xff0c;真的可以再考虑一下的......▼6 四只手才能拆的避孕套▼7 谭警官&#xff1a;莫挨我&#xff01;&#xff…

WPF GridControl控件的用法举例

01—前言WPF中自带的表格控件是DataGrid&#xff0c;但是格式并不是很美观&#xff0c;我们一般用Dev中类似的控件GridControl来取代&#xff0c;这个控件功能相当强大。WPF数据网格&#xff08;GridControl&#xff09;是一个数据感知控件&#xff0c;用于以不同的布局显示和编…

Android之如何ubuntu环境下在手机里面快速找到apk的位置然后拉下来

1、在手机里面通过包名找到APK的位置 adb shell pm list packages -f | grep acr -f 是文件路径的意思acr是过滤包名的apk名字结果显示package:/data/app/com.nll.acr-1/base.apkcom.null.acr2、得到apk路径之后&#xff0c;修改名字,拉倒本地 adb pull /data/app/com.nll.acr-…

《黑书》hdu1271递推习题:整数对

我能说这道题目被黑书坑了吗&#xff1f;这是递推题&#xff1f;......好吧&#xff0c;那么我是的确没有想到这样去做的。只是想着&#xff0c;可以枚举缺少的位&#xff0c;然后用搜索去解决.......但是我仔细思考&#xff0c;觉得用搜索太麻烦了&#xff0c;要处理很多细节&…

推荐我看过的几本好书给大家!(2)

继续从亚马逊盗图&#xff01;哈哈&#xff01; 这本书感觉很不错&#xff0c;对于算法&#xff0c;个人觉得还是需要掌握的&#xff0c;毕竟你不可能一辈子都做最底层的程序员吧&#xff0c;想要获得提升&#xff0c;一方面是经验的积累&#xff0c;另外一方面则是一种厚积薄发…

《SAS编程与数据挖掘商业案例》学习笔记之十四

继续《SAS编程与数据挖掘商业案例》学习笔记系列&#xff0c;本次重点&#xff1a;常用全程语句 所谓全程语句&#xff0c;是指可以用在任何地方的sas语句&#xff0c;既可以用在data数据步语句里面&#xff0c;也可以用在proc过程步里面&#xff0c;甚至可以单独使用&#xff…

细聊.NET6 ConfigurationManager的实现

前言友情提示:建议阅读本文之前先了解下.Net Core配置体系相关&#xff0c;也可以参考本人之前的文章《.Net Core Configuration源码探究 [1]》然后对.Net Core的Configuration体系有一定的了解&#xff0c;使得理解起来更清晰。在.Net6中关于配置相关多出一个关于配置相关的类…

activemq安全设置 设置admin的用户名和密码

ActiveMQ使用的是jetty服务器, 打开conf/jetty.xml文件&#xff0c;找到 <bean id"securityConstraint" class"org.eclipse.jetty.http.security.Constraint"> <property name"name" value"BASIC" /> <p…

Android之在ubuntu上常用的am、pm命令的总结

adb shell am instrument [options] <COMPONENT> 作用&#xff1a;启动对instrument实例的监视。 参数[options]&#xff1a; -e <key> <value> // -e选项需要放在-w选项之前 作用&#xff1a;提供了以键值对形式存在的测试选项。Android中提供了多种键值对&…