zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    关闭各种浏览器自动更新的方法
    新中新question
    linux忘记root密码后的解决办法
    Linux下的命令
    windows未启用Administrator账户
    Jenkins安装以及邮件配置
    pl/sql不能复制粘贴
    python-装饰器&自动化框架搭建
    进程练习——生成指定规格的图片
    python-类的各种方法
  • 原文地址:https://www.cnblogs.com/skl374199080/p/3107716.html
Copyright © 2011-2022 走看看