【2】uC/OS-III应用开发————>启动流程(STM32F767)

2023-05-16

  1. 简述:
    1. 上电启动,分为三个阶段
      1. CPU内核的初始化,ARM公司编写,所用CPU的.s文件
      2. 外设模块的初始化
      3. OS相关操作的初始化、启动、调度等等
  2. 系统的启动
    1. 上电执行启动文件里面的复位函数Reset_Handler
    2. 复位函数中调用C库函数_main跳转到主程序
    3. 调用SystemInit来进行系统初始化
  3. 外设模块
    1. 初始化系统时钟
    2. 中断分组
    3. 外设:GPIO、串口...等等
    4. 注:这些外设的初始化一般放在BSP_Init()函数中
  4. OS系统启动相关操作
    1. 系统初始化:OSInit()函数
      1. 初始化操作系统相关的全局变量、链表结构
      2. 空闲任务的初始化
      3. 时钟节拍任务的初始化
      4.  空闲与时钟节拍这两个任务是必须存在的,否则系统无法运行
    2. 空闲任务:OS_TickTaskInit()
      1. 空闲任务的相关信息由系统默认指定,用户不能轻易修改
      2. 空闲任务是一个无限的死循环
      3. 其优先级最低,任务比它高的任务都能抢占它得到CPU的使用权
      4. CPU不会停止工作,当其它任务都处于阻塞中,系统才会运行空闲任务
    3. CPU(时间戳)初始化CPU_TS_TmrInit()
      1. 利用内核中的DWT中的CYCCNT(向上计数器),记录内核时钟运行的个数
      2. 内核时钟跳动一次,该计数器加1
      3. CYCCNT精度非常高,其精度取决于内核的频率
      4. 例如STM32F7时钟为216M,精度 = 1/216M = 4.6ns
      5. 主要用于测试任务执行效率
    4. SysTick初始化OS_CPU_SysTickInit()
      1. 时钟节拍的频率表示操作系统每1秒钟产生多少个tick
      2. tick:操作系统节拍的时钟周期,系统以固定的频率产生中断(时基中断)并且在中断中处理与时间相关的事件,推动任务向前运行
      3. 时钟节拍依赖于硬件定时器,Crotex-m中经常使用的SysTick时钟是MCU的内核定时器
      4. 默认频率为1000Hz,频率过高,增加系统负担,过低,影响任务切换
    5. 内存初始化Mem_Init()
      1. 系统采用一块连续的大数组作为系统管理的内存
      2. 使用前先将管理的内存进行初始化
    6. 启动函数OSStart()
      1. 创建完任务的时候,需要开启调度器,让系统开始运行
    7. 主函数main.c
      1. 参考上节
  5. 下载验证
  6. 总结
    1. 本节无例程,只是对uC/OS-III的启动流程分析
  7. 参考资料:
    1. 正点原子《STM32F767 UCOS开发手册》
    2. 野火《uC/OS-III内核应用与开发》
    3. 《嵌入式实时操作系统 uC/OS-III原理及应用(第二版)》
    4. 官方源码
  8. 硬件平台:
    1. 正点原子阿波罗F767
  9. 软件平台:
    1. MDK5.2.5
  10. 库版本:
    1. TM32Cube_FW_F7_V1.4.0
  11. uC/OS-III版本
    1. UCOSIII 3.04
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【2】uC/OS-III应用开发————>启动流程(STM32F767) 的相关文章

  • 参加百度轻应用编程马拉松总结

    上个周末 xff0c 我到北京参加了百度举办的轻应用编程马拉松大赛 xff0c 感觉非常不错 xff0c 在此总结一下 这是我第一次参加编程马拉松的活动 xff0c 对此充满了好奇也充满了期望 xff0c 更是希望自己以后也能够组织类似的活
  • 将AD的文件导入立创EDA

    https docs lceda cn cn Import Import Altium Designer index html
  • 前天奶奶来了 xff0c 把屋子里面的东西都收拾了一下 xff0c 尤其是佳佳的玩具 xff0c 有好多毛绒玩具 xff0c 都放在一个柜子的层里面了 早上佳佳醒来 xff0c 发现了新大陆 xff01 美羊羊都碰头了 xff01 维尼的碰
  • 超级简单的抽奖工具

    昨天快到中午的时候接到业务部门的一个需求 xff0c 要求对现有的抽奖软件进行改进 问题是 xff1a 现在的抽奖软件每次只能够抽出一个中奖号码 xff0c 而此次设置的各种奖项的中奖人数加起来有500人 xff0c 如果使用原有的软件 x
  • 程序员应知——把小事做好

    在从事软件开发的这些年中 xff0c 近期越来越多地听到这样的论点 xff1a 当前的程序员越来越浮躁 我的感觉也是如此 xff0c 由于在软件公司中 xff0c 人才流动特别快 xff0c 因此很多人的职位也变化的比较快 xff0c 很可
  • 程序员应知——学习、思考与分享

    有人说 xff0c 程序员是个苦差事 xff0c 一辈子总是要不停地学习 xff0c 学习新的技术 xff0c 学习新的架构 xff0c 学习新的工具 xff0c 一旦一段时间不学习 xff0c 就会发现其他人嘴里冒出来的新鲜词 xff0c
  • Evernote和有道云笔记的比较

    每个人可能都有随手记录一些事情的习惯 xff0c 可能是为了不忘记 xff0c 也可能是随时闪现在头脑中的一些想法 xff0c 因此就有了便利贴 xff0c 而在计算机或者说互联网的时代 xff0c 我们就有了更多选择 xff0c 可以随时
  • 软件开发中的哲学——世界的本原是物质(一)

    在这个系列博客的第一篇中 xff0c 首先要涉及到的哲学原理就是 世界的本原是物质 在IT领域 xff0c 有硬件和软件之分 xff0c 而二者之间的关系 xff0c 就和物质与精神类似 没有硬件的存在 xff0c 那么软件就没有能够发挥作
  • 在Prezi中输入简体中文的完美解决方案

    Prezi是一种在线制作演示文档 xff08 PPT xff09 的工具 xff0c 它与传统的Powerpoint或者Keynote的表现形式完全不同 xff0c 被称为 powerpoint的颠覆者 xff0c 在36Kr上曾经有过多篇
  • C程序中头文件相互包含精华(网摘小结)

    h 中一般放的是同名 c 文件中定义的变量 数组 函数的声明 xff0c 需要让 c 外部使用的声明 1 h 文件作用 1 方便开发 包含一些文件需要的共同的常量 结构 类型定义 函数 变量申明 xff1b 2 提供接口 对一个软件包来说可
  • 【无标题】sourceTree使用教程,比TortoiseSVN小乌龟更好用的一款软件

    俗话说的好工欲善其事必先利其器 xff0c Git分布式版本控制系统是我们日常开发中不可或缺的 目前市面上比较流行的Git可视化管理工具有SourceTree Github Desktop TortoiseGit xff0c 综合网上的一些
  • Vim(gvim)配色方案推荐

    如果经常用vim进行编辑 xff0c 那么一款好的vim配色就是必然的啦 xff0c 今天我们就来介绍一下我比较喜欢的几款配色 xff08 配色效果主要针对gvim xff0c 因为在vim下工作都是终端操作 xff09 由于本人是以程序员
  • 如何定义python的全局变量

    定义全局变量 global var 61 10 def some function 在函数中使用全局变量 print 34 Global variable value 34 global var some function 在Python中
  • 网上推荐的学习ucosii的三本书

    1 xff0c 嵌入式实时操作系统uc os II教程 西安电子科技大学出版 xff0c 有流程图 2 xff0c 嵌入式实时操作系统uc os II原理与应用 xff08 第二版 xff09 任哲 北航出版 3 xff0c 基于嵌入式实时
  • UC/OSII源码阅读知识点(第一章)

    嵌入式实时操作系统uc os原理与实践 xff08 卢有亮 电子工业出版社 xff09 1 在STM32上使用的ARM CORTEX处理器中 xff0c 具有主堆栈MSP和进程堆栈PSP xff0c 具有Pendsv和Systick中断 2
  • 802.11控制帧&管理帧

    控制帧主要用于协助数据帧的传递 xff0c 可用于管理无线媒介的访问 提供MAC层的可靠性 以下只讲帧类型 xff0c 不讲帧结构 1 1 RTS帧 xff1a 用来取得媒介的控制权 xff0c 用于传送分段帧 xff0c 分段由网卡驱动程
  • linux常用变量含义

    是传给脚本的参数个数 0 是脚本本身的名字 1 是传递给该shell脚本的第一个参数 2 是传递给该shell脚本的第二个参数 64 是传给脚本的所有参数的列表 是以一个单字符串显示所有向脚本传递的参数 xff0c 与位置变量不同 xff0
  • 四核 x86 MinnowBoard 和 UP Squared 单板计算机

    MinnowBoard的 MinnowBoard Turbot Quad 和Aaeon的UP平方单板计算机开始出货 xff0c 以社区网站和运行Linux和Android的英特尔SoC为特点 5月23日 xff0c Intel支持的Minn
  • 无人机悬停 优象科技LC302 V1.1光流模块

    5月30日 xff0c 学校组织了一年一度的五月风活动 xff0c 每个社团纷纷拿出自己协会的作品 在我们科技爱好者协会中 xff0c 展示了光流模块 xff0c 特斯拉线圈 xff0c 蓝牙小车 xff0c 激光显示仪器 xff0c 空气
  • git中tag与release的创建以及两者的区别

    简介 本文辨析在参与开源项目时会遇到的tag与release的概念区别与联系 xff0c 并比较两者的创建方法 定义 标签 xff08 tag xff09 是特定提交 xff08 commit 一个指针 xff0c 也就是每个tag对应一个

随机推荐