(1)core_cm3.c , core_cm.h:获取设置CM3内核,配置一些内核寄存器,用到CM3核的都需要;

(2)stm32f10x.h 和 system_stm32f10x.c , system_stm32f10x.h 和 startup_stm32f10x_hd.s : stm32的支撑文件,这几个文件是和具体的芯片有关的;

  ①stm32f10x.h:标准外设库的入口,使用标准外设库的代码中必须包含该头文件;

  ②system_stm32f10x.c , system_stm32f10x.h:芯片初始化函数文件,提供库函数来初始化stm32芯片,配置PLL、系统时钟、Flash接口;

  ③startup_stm32f10x_hd.s : hd表明是大容量型芯片。      (4部分6文件)

(3)misc.c , misc.h:NVIC、SysTick是驱动代码;

(4)stm32f10x_it.c:中断服务程序文件;

(5)stm32f10x_conf.h:外设配置文件;

/*----------------------------------------ST源码-----------------------------------------------*/

uUCS

(1)不区分特权级和用户级,程序始终工作在特权级(控制寄存器CONTROL)MSP和PSP两个堆栈指针的切换是全自动的,就在出入异常服务例程时由硬件处理。复位时MSP初值0x00000000,0x00000004 PC  初值复位向量

(2)PendSV中断做上下文切换,也就是任务切换,是ucosii移植过程中最重要的中断

  主要有两点: 
  1.PendSV中断是手工往NVIC 的PendSV悬起寄存器中写1 产生的(由OS 写) 。 
  2.PendSV中断优先级必须设为最低。

(3)中断

  中断/异常的响应序列 
  当CM3开始响应一个中断时 
  1.xPSR, PC, LR, R12以及R3‐R0入栈 
  2.取向量      
  3.选择堆栈指针MSP/PSP,更新堆栈指针SP,更新连接寄存器LR,更新程序计数器PC 
  对移植ucosii 来说,需要注意1,3

(4) ucosii 代码组成

os_task.c 任务管理代码。 
os_flag.c  标志位管理
os_mbox.c   消息邮箱
os_mutex.c  消息队列
os_q.c 
os_sem.c 各个同步量管理代码。
os_mem.c 内存管理代码。 
os_time.c 时间管理代码,主要做各种延时。 
os_tmr.c   定时器管理代码

定时器管理代码,这部分代码时从 V2.81 版才开始有的,邵老师的书讲的是 V2.55 版的代码,是没有
这部分内容的。如果前面的代码都理解的话,这部分代码也是不难理解的。一个定时器大体由 3 部分组成:
定时时间,回调函数和属性。当定时时间到了的话,就进行一次回调函数的处理,定时器属性说明定时器
是周期性的定时还是只做一次定时。如果用户使能了 OS_TMR_EN,ucosii 会在内部创建一个定时器任务,
负责处理各个定时器。这个任务一般应该由硬件定时器的中断函数中调用 OSTmrSignal()去激活。所以从本
质上说 os_tmr.c 中的定时器是由一个硬件定时器分化出来的。

默认情况下是由 SysTick 中断里通过 OSTimeTickHook()去激活定时器任务的。 
 
移植相关文件
os_cpu.h:      进行数据类型定义,处理器相关代码和几个函数原型。
os_cpu_c.c:     定义一些用户 hook函数。 
os_cpu_a.asm: 移植需要用汇编代码完成的函数,主要就是任务切换函数。 
os_dbg.c:      内核调试相关数据和函数,可以不改。

(5)任务切换

这里OS_CPU_PendSVHandler 要替换为 为 PendSV_Handler;如下 下图:

OSTaskStkInit()的工作就是在任
务自己的栈中保存 cpu 的所有寄存器

PendSV 中断服务程序  ------ 任务切换

SysTick 中断服务程序 --------系统时钟

那么 任务切换 与 系统时钟的关系呢?

我想他们应该没什么关系,任务的挂起有一定的事件触发,系统时钟是系统的节拍,在不停的走。不是太理解,高手路过要多多指教啊

STM32各个文件介绍、uCOSII文件介绍的更多相关文章

  1. Linux文件查看/编辑方法介绍

    转载:https://www.centos.bz/2011/10/linux-file-view-edit/ cat 命令介绍 cat 命令的原含义为连接(concatenate), 用于连接多个文件 ...

  2. linux 下各文件夹的功能性介绍。(转载)

    原文来自:http://www.cnblogs.com/wen858636827/archive/2012/12/26/2834373.html /opt   放置用户自己下载的软件  英文全称是op ...

  3. Linux 内核的文件 Cache 管理机制介绍

    Linux 内核的文件 Cache 管理机制介绍 http://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完 ...

  4. host文件的作用和介绍

    在Window系统中有个Hosts文件(没有后缀名)在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\E ...

  5. Side by Side Assembly介绍--manifest文件的使用

    什么是Side-by-Side Assembly? Side-by-Side Assembly(建称SxS)是微软在Visual Studio 2005(Windows 2000?)中引入的技术,用来 ...

  6. Linux 内核的文件 Cache 管理机制介绍-ibm

    https://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使 ...

  7. PHP 关于文件操作的简单介绍

    文件操作一直是Web程序员头疼的地方,而文件操作在CMS这样的系统中又是必须的.如今,PHP文件操作的函数内容已经非常强大,文件这部分也是学习PHP非常重要的一部分,希望大家不要忽略.这篇文章会简单介 ...

  8. java中io对文件操作的简单介绍

    11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...

  9. QT中PRO文件写法的详细介绍

    学习Qt时,发现有些知识看了不经常用就忘了,以下是书本上写的一些关于qmake的相关知识,自己看后,打算把一些经常用到的记下来,整理整理. Qt程序一般使用Qt提供的qmake工具来编译. qmake ...

  10. Python文件和目录模块介绍:glob、shutil、ConfigParser

    glob模块 查找符合特定规则的文件路径名,路径名可以使用绝对路径也可以使用相对路径.查找文件会使用到三个通配符,星号*,问号?和中括号[],其中"*"表示匹配0~n个字符, &q ...

随机推荐

  1. Hive之import和export使用详解

    在hive-0.8.0后引入了import/export命令. Export命令可以导出一张表或分区的数据和元数据信息到一个输出位置,并且导出数据可以被移动到另一个hadoop集群或hive实例,并且 ...

  2. linux:正则表达式grep命令

    基本语法一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串. 一.选择:| |   竖直分隔符表示选择,例如"boy|girl"可 ...

  3. 源码 <oss2.models.PutObjectResult object at 0x7f7928d0b240>

    <oss2.models.PutObjectResult object at 0x7f7928d0b240> # -*- coding: utf-8 -*- import oss2 oss ...

  4. java进程和线程的区别

    什么是进程,什么是线程系统要做一件事,运行一个任务,所有运行的任务通常就是一个程序:每个运行中的程序就是一个进程,这一点在任务管理器上面可以形象的看到.当一个程序运行时,内部可能会包含多个顺序执行流, ...

  5. HTTP头部信息解释分析(详细整理)

    这篇文章为大家介绍了HTTP头部信息,中英文对比分析,还是比较全面的,若大家在使用过程中遇到不了解的,可以适当参考下 HTTP 头部解释 1. Accept:告诉WEB服务器自己接受什么介质类型,*/ ...

  6. 万恶之源 - Python基础数据类型三

    字典 字典的简单介绍 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key ...

  7. 自定义WordPress文件上传路径

    自WordPress 3.5版本开始,隐藏了后台媒体设置页面的“默认上传路径和文件的完整URL地址”选项,可以通过下面的代码将该选项调出来. 将下面的代码添加到当前主题functions.php文件中 ...

  8. [py模块]random&string取随机字符串

    栗子 - 取n位的随机字符串(大小写/数字) def get_random_str(len_str): import string import random letters_nums = strin ...

  9. poj1753Flip Game(dfs)

    Flip Game  思想很不成熟, #include <stdio.h>#include <string.h>#include <stdlib.h>int map ...

  10. SDUT1157:小鼠迷宫问题(bfs+dfs)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1157 题目描述 小鼠a与小鼠b身处一个m×n的 ...