嵌入式系统复习资料(共19页).doc

上传人:飞****2 文档编号:16703603 上传时间:2022-05-18 格式:DOC 页数:19 大小:557.50KB
返回 下载 相关 举报
嵌入式系统复习资料(共19页).doc_第1页
第1页 / 共19页
嵌入式系统复习资料(共19页).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《嵌入式系统复习资料(共19页).doc》由会员分享,可在线阅读,更多相关《嵌入式系统复习资料(共19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上第1章 嵌入式系统导论1. 嵌入式系统的概念:是以现代计算机技术为基础,以应用为中心,可以根据系统或用户需求(功能、可靠性、成本、体积、功耗、环境等),灵活裁剪软硬件模块的专用计算机系统。2. 嵌入式系统的分类及分类依据:嵌入式系统由硬件和软件两大部分组成,用于实现对其他设备的控制、监视或管理等功能。前者是整个系统的物理基础,它提供软件运行平台和通信接口;后者实际控制系统的运行。硬件:嵌入式微处理器、 外围电路、 外围硬件设备。软件:BootLoader 、嵌入式操作系统、用户的应用程序等。3.几种典型嵌入式操作系统:(1) uC/OS II (2)uCLinux (

2、3)Windows CE (4)嵌入式Linux 等4. 任务调度:任务的调度有三种方式: 可抢占式、不可抢占式和时间片轮转。 【不可抢占式调度是指一个任务一旦获得CPU就独占其运行,除非由于某种原因使它决定放弃CPU的使用权;可抢占式调度是基于任务优先级的,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;当两个或两个以上任务有同样的优先级时,不同任务轮转使用CPU,直到系统分配的CPU时间片用完,这就是时间片轮转调度。】目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的可抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。5. 针对有内存管理单元(MMU,Me

3、mory Management Unit)的处理器而设计的一些桌面操作系统,如Windows、Linux,使用了虚拟存储器的概念。6. 计算机的发展:冯诺依曼架构:将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。哈佛结构(冯诺依曼架构的扩展):主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编制、独立访问。CortexM37.Cortex系列按嵌入式系统的典型应用分类 : Cortex-A:高性能(High Performance),【针对日益增长的运行Linux、WinCE、Symbian等操作系统在内的消费者

4、娱乐和无线产品设计与实现。】 Cortex-M:微控制器类(Microcontroller),【针对应用系统对功耗、成本敏感,同时对微处理器性能要求较高的工业领域(汽车、家电、医疗器械等)。】 Cortex-R:【实时类(Real Time),针对实时性要求较高的领域,可以运行RTOS。】 Cortex-W:【Wireless】Cortex指令完全采用Thumb-2体系架构。第2章 Cortex-M3 内核原理1.Cortex-M3是ARM公司推出的新一代32位低成本、高性能通用微控制器内核。2.Cortex-M3 体系结构:Cortex-M3 处理器主要由两大部分组成 : Cortex-M3

5、 内核:l 中央处理器核心(Cortex-M3 Corel 嵌套向量中断控制器(NVIC )l 系统时钟(SYSTICK )l 存储器保护单元(MPU)l 总线 调试系统3. AMBA总线:(l)AHB:Advanced High Performance Bus,用于高性能系统模块的连接,支持突发模式数据传输和事务(ACID:原子性、一致性、隔离性和持久性)分割;(2)ASB:Advanced System Bus,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由AHB总线替代;(3) APB:Advanced PeriPheral Bus,用于较低性能外设的简

6、单连接,一般是接在AHB或ASB系统总线上的第二级总线。(4)4. Cortex-M3内核是典型的32位处理器内核: 内部数据路径宽度为32位, 寄存器宽度为32位, 存储器接口宽度也是32位, Cortex-M3内核拥有独立的指令总线和数据总线,其寻址能力均为4G,且共享同一个存储器空间,取指与数据访问可同时进行。5. Cortex-M3寄存器:(1). 低组寄存器(R0R7)【所有指令均能访问,字长为32位,复位后的初始值是随机的。 绝大多数16 位 Thumb 指令只能访问R0R7 。】(2). 高组寄存器(R8R12)【只有很少的 16 位Thumb 指令能访问,32位指令则不受限制,

7、复位后的初始值是随机的。】(3). 堆栈寄存器(R13) 又称“堆栈指针SP”【Cortex-M3处理器内核有两个堆栈,但这两个寄存器不会同时生效,根据系统运行状态进行堆栈切换,以保证程序运行的快速性、安全性等要求。】 主堆栈指针(MSP ),或写作SP_main。【缺省堆栈指针,它由OS内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。】进程堆栈指针(PSP ),或写作SP_process。【用于常规的应用程序代码(不处于异常服务例程中时)。】6. 在系统连接结构中,通常借助AHB-APB 桥实现内核内部高速总线到外部低速总线的数据缓冲和转换。7. Cortex-M3是一个32 位

8、处理器,支持 4GB 存储空间, 与ARM 架构相比,有很多优点:(1)预定义存储器映射和总线配置;(2)支持 “ 位带(bit band )” 操作;(3)支持非对齐访问和互斥访问;(4)支持小端和大端两种存储格8.位带操作:(1)概念: 位带操作,只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。位带别名区中的访问操作是原子的,消灭了传统的“读改写”三步曲以及由此产生的被中断的可能。(2)为什么采用位带操作?可以显著提高位操作的效率和安全性,对许多底层软件开发特别是操作系统和驱动程序具有重要意义。(

9、3) 片内外设区(Peripheral ,0x0x5FFFFFFF ,512MB) 外部RAM 区(External Ram ,0x0x9FFFFFFF ,256KB ) 外部设备区(External Device ,0xA0xDFFFFFFF ,768KB ) (4)映射公式:bit_word_addr =bit_band_alias_base + (byte_offset 32) + (bit_number4) bit_word_addr 是别名存储器区中字的地址,它映射到某个目标位。 bit_band_alias_base 是别名区的基址,即起始地址。 byte_offset 是包含目标

10、位的字节在位带区里的序号。 bit_number 是位带区目标位所在字节中的位置(0-7)。(5) 例题:例1 :位带区SRAM地址为0x的字节中的位2,其位带别名区的映射地?【答案】? = 0x + (0x300*32) + (2*4). 0x = 0x + (0x300*32) + (2*4). 对0x地址的写操作和对SRAM中地址0x字节的位2执行 “读-改-写 ”操作有着相同的效果。例2 :(1)地址 ? 的别名字映射为0x200FFFFF的bit-band字节的位0:(2)地址 ? 的别名字映射为0x200FFFFF的bit-band字节的位7:(3)地址 ? 的别名字映射为0x 的

11、bit-band字节的位0:(4)地址 ? 的别名字映射为0x的bit-band字节的位7:【答案】(1)地址 0x23FFFFE0 的别名字映射为0x200FFFFF的bit-band字节的位0:0x23FFFFE0=0x+(0xFFFFF*32)+0*4(2)地址0x23FFFFEC 的别名字映射为0x200FFFFF的bit-band字节的位7:0x23FFFFEC=0x+(0xFFFFF*32)+7*4(3)地址0x 的别名字映射为0x 的bit-band字节的位0:0x=0x+(0*32)+0*4(4)地址0xC 的别名字映射为0x 的bit-band字节的位7:0xC=0x+(0*

12、32)+7*4例2图示: 怎样利用“位带操作”进行位带区的“读改写”呢?例3 : 欲设置地址0x中的比特2。【答案】 Without Bit-Band With Bit-BandLDR R0,=0x;Setup address LDR R0, =0x ; Setup addressLDR R1, R0 ; Read MOV R1, #1 ; Setup dataORR.W R1, #0x4 ; Modify bit STR R1, R0 ; WriteSTR R1, R0 ;Write back result例4 :假如在(位带区)地址0x处的字为0x3355AACC,要求对bit2清零。【答

13、案】 无位带LDR R0, =0x ; 建立地址LDR R1, R0 ; ReadAND.W R1, #0xFFFFFFFB ; bit2清零STR R1, R0 ; write back result 有位带LDR R0, =0x ; 建立地址Move R1, 0 ; Setup DataSTR R1, R0 ; write back result【解答】 读取地址0x。本次读访问将读取0x,并提取比特2,值为1。 往地址0x处写0。本次操作将被映射成对地址0x的“读改写” 操作(原子操作),把比特2清0。 现在再读取0x,将返回0x3355AAC8(bit2已清零)。9.工作模式 Cort

14、ex-M3支持两种模式和两个特权等级。异常handler 代码 特权级 用户级 处理模式(handler mode)用法错误主应用程序代码 线程模式(thread mode)线程模式(thread mode) RESET Cortex-M3处理器的工作模式和特权等级共有三种配合。 线程模式+ 用户级 线程模式+ 特权级 Handler 模式+ 特权级10. 中断:(1) 中断的概念:所谓中断,是指CPU对系统内、外发生的某个事件的一种响应过程,或者说“一种机制”,即CPU暂时停止现行程序的执行,自动转去执行预先安排好的处理该事件的服务子程序;当处理结束后,再返回到被暂停的程序的断点处,继续执行

15、原来的程序。(2) 什么是中断向量表?Cortex-M3拥有一张向量表,用于在发生中断并作出响应时,从表中查询与中断对应的处理例程的入口地址向量。(3) CortexM3内核集成了中断控制器 嵌套向量中断控制器 NVIC (Nested Vectored Interrupt Controller)。(4) 中断优先级: Cortex-M3除配置优先级外,还通过把256级优先级分为抢占优先级和亚优先级支持最多128个抢占级。优先级分组规定:亚优先级至少是1 位,因此抢占优先级最多是7 位,128 级抢占优先级。第3章 STM32固件库介绍1.CMSIS-外设访问层的文件(1)独立于编译器的文件:

16、 Cortex-M3内核及其设备文件(core_cm3.h + core_cm3.c) - 访问Cortex-M3内核及其设备:NVIC,SysTick等 - 访问Cortex-M3的CPU寄存器和内核外设的函数 微控制器专用头文件(device.h) - 指定中断号码(与启动文件一致) - 外设寄存器定义(寄存器的基地址和布局) - 控制微控制器其他特有的功能的函数(可选) 微控制器专用系统文件(system_device.c) - 函数SystemInit,用来初始化微控制器 - 函数Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件startup_stm32f10x_x

17、x.s /.c,在跳转到main前调用 - SystemFrequncy,该值代表系统时钟频率 - 微控制器的其他功能(可选)(2)编译器供应商+微控制器专用启动文件- 编译器启动代码(汇编或者C)(startup_device.s)- 微控制器专用的中断处理程序列表(与头文件一致)- 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)2.CMSIS文件名的定义标准 core_cm3.h Cortex-M3 global declarations and definitions, static function definitions core_cm3.c Cortex-M3 gl

18、obal definitions .h Top-level header file (device specific). To be included by application code. Includes core_cm3.h and system_.h system_.h Device specific declarations system_.c Device specific definitions, e.g. SystemInit()【我也不知道上面到底哪个是要考的-_-|】第4章 基于Cortex-M3的STM32F10x“最小系统”1. 最小系统:(1) “最小系统”的概念:

19、在尽可能减少上层应用的情况下,能够使系统运行的最小化模块配置。对于当前的大多数微控制器而言,“最小系统”称为“嵌入式核心控制模块”似乎更贴切一些。(2) 最小系统的组成: 电源、时钟、复位电路、存储系统、调试系统 时钟模块通常经ARM内部锁相环进行相应的倍频,以提供系统各模块运行所需的时钟频率输入 Flash 存储模块存放启动代码、操作系统和用户应用程序代码 SDRAM 模块为系统运行提供动态存储空间,是系统代码运行的主要区域 JTAG 模块实现对程序代码的下载和调试 UART 模块实现对调试信息的终端显示 复位模块实现对系统的复位(3) 嵌入式最小系统的核心部分:Cortex-M3 微处理器

20、、FLASH 和SDRAM 模块2. STM32F103处理器系统频率为72MHz,处理器性能可达到90DMIPS,此时Cortex-M3功耗约14W左右。3. 系统复位:系统复位将清除时钟控制器CSR中的复位标志和备用域寄存器之外的所有寄存器。STM32内含复位电路支持,当任意一个下列事件发生时都将引起系统自动复位: NRST 引脚出现低电平 ( 外部复位 ); 看门狗计时器计时终止( WWDG 复位 ); 独立看门狗计数终止( IWDG 复位 ); 软件复位( SW 复位 ); 低功耗管理复位。 可通过查询控制/状态寄存器RCC_CSR中的复位标志来识别复位源。4.电压调压器电压调压器的三

21、种操作模式 : 主模式( MR ):又称“ 运行模式 ( Run Mode )”或“ 调节模式”,用于CPU正常的运行操作,以正常功耗模式,向内核、内存、外设供给1.8V电源。 低功耗模式( LPR ):又称 “ 停止(机)模式( Stop Mode )?”,当CPU无任务需要处理时,以低功耗模式供1.8V电源,以保持SRAM、寄存器等的内容。一般可以根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定最佳低功耗模式。 掉电(关断)模式:用于CPU“ 待机模式 ( Standby Mode )”,调压器的输出为高阻状态,停止内核电路供电,调压器处于零消耗状态,除待机电路和备份域外,寄存器

22、和SRAM的内容将丢失。 有时,该模式被归为“低功耗模式”的一种。5.GPIO模块(1)GPIO(General Purpose Input Output,通用I/O)接口模块,可以为CPU提供数字输入输出功能。(2)可以对通过软件对GPIO 接口进行灵活配置和操纵,包括: 输入输出的方向配置 引脚功能复用 引脚的重新映射 是否可以申请中断 PWM输出等(3)STM32F10x系列产品的GPIO模块,可以进行输入输出等功能的配置。共8种模式: 入浮空输入: In_Floating 上拉入输入: IPU (In Push_Up) 下拉入输入: IPD (In Push_Down) 入模拟输入:

23、AIN (Analog In) 开漏出输出: OUT_OD (OD: Open-Drain) 推挽出输出: OUT_PP (PP: Push-Pull) 复用功能推挽出输出: AF_PP 复用功能开漏出输出: AF_OD(4)通过I/O 端口配置方式降低功耗(5)GPIO复用功能为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。这可以通过软件配置相应的寄存器来完成(参考AFIO寄存器描述)。这时,复用功能就不再映射到它们的原始引脚上了。6.GPIO的配置 先看GPIO.h文件typedef enumGPIO_Speed_10MHz = 1,GPIO_

24、Speed_2MHz,GPIO_Speed_50MHzGPIOSpeed_TypeDef;#define IS_GPIO_SPEED(SPEED) (SPEED) =GPIO_Speed_10MHz) | (SPEED) = GPIO_Speed_2MHz) | (SPEED) = GPIO_Speed_50MHz)typedef enum GPIO_Mode_AIN = 0x0,GPIO_Mode_IN_FLOATING = 0x04,GPIO_Mode_IPD = 0x28,GPIO_Mode_IPU = 0x48,GPIO_Mode_Out_OD = 0x14,GPIO_Mode_Out

25、_PP = 0x10,GPIO_Mode_AF_OD = 0x1C,GPIO_Mode_AF_PP = 0x18GPIOMode_TypeDef;#define IS_GPIO_MODE(MODE) (MODE) = GPIO_Mode_AIN) | (MODE) =GPIO_Mode_IN_FLOATING) | (MODE) = GPIO_Mode_IPD) | (MODE) = GPIO_Mode_IPU) | (MODE) = GPIO_Mode_Out_OD) | (MODE) = GPIO_Mode_Out_PP) | (MODE) = GPIO_Mode_AF_OD) | (MO

26、DE) = GPIO_Mode_AF_PP)typedef structuint16_t GPIO_Pin; /*! Specifies the GPIO pins to be configured.This parameter can be any value of ref GPIO_pins_define */GPIOSpeed_TypeDef GPIO_Speed; /*! Specifies the speed for the selected pins.This parameter can be a value of ref GPIOSpeed_TypeDef */GPIOMode_

27、TypeDef GPIO_Mode; /*!ODR = 0xfffffc4f;Delay(800);GPIOC-ODR = 0xfffffc8f;Delay(800);GPIOC-ODR = 0xfffffd0f;Delay(800);GPIOC-ODR = 0xfffffe0f;Delay(800);void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;/* Configure PC. as Output push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPI

28、O_Pin_7|GPIO_Pin_8|GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOC, &GPIO_InitStructure);/* Configure PB9 as input floating (EXTI Line9) */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_

29、FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);7. NVIC中断程序配置 硬件中断选择:通过下面的过程来配置19个线路做为中断源:(1)配置 19 个中断线的屏蔽位( (EXTI_IMR) ); (2)配置所选中断线的触发选择位( (EXTI_RTSR 和 EXTI_FTSR) ); (3)配置那些控制映像到外部中断控制器(EXTI) 的 NVIC中断通道的使能和屏蔽位,使得 19 个中断线中的请求可以被正确地响应。 硬件事件选择:通过下面的过程,可以配置19个线路为事件源(1)配置 19 个事件线的屏蔽位( (EXTI_EMR )(2)配置 事

30、件线的触发选择位( (EXTI_RTSR and EXTI_FTSR ) 软件中断/ 事件的选择:19个线路可以被配置成软件中断/事件线。下面是产生软件中断的过程:(1) 配置 19 个中断/ 事件线屏蔽位( (EXTI_IMR, EXTI_EMR )(2)设置软件中断寄存器的请求位( (EXTI_SWIER )8.在STM32F103中,三个不同的时钟源可以用来驱动系统时钟(SYSCLK): HSI 晶振时钟( 高速内部时钟信号) ; HSE 晶振时钟( 高速外部时钟信号) ; PLL 时钟。9. 内部8个定时器,分三类: 通用定时器(General Purpose Timers):TIM2

31、-TIM5 基本定时器(Basic Timers):TIM6、TIM7 高级定时器(Advanced Control Timers)TIM1、TIM8(大容量STM32F103/107独有)10.定时器可以作为计数器使用,区别在于:定时器使用微控制器的时钟来计数 计数器使用的是外部信号计数【 从功能上来看:基本定时器是通用定时器的子集,通用定时器又是高级定时器的子集。】11. 定时器的计数模式: 向上计数模式:从0递增,计到TIMx_ARR计数器的自动装载值,并产生计数溢出脉冲; 向下计数模式 :从TIMx_ARR计数器的自动装载值递减,计到0 ,并产生计数溢出脉冲; 中心对称计数模式 :从0

32、递增,计到TIMx_ARR计数器的自动装载值,并产生计数溢出脉冲;然后,从TIMx_ARR计数器的自动装载值递减,计到0 ,又产生计数溢出脉冲;之后又从0开始循环计数。12. 定时器的设置:#include stm32f10x_heads.h#include HelloRobot.hvoid Timx_Init(void);int main(void)BSP_Init();Timx_Init();/ 定时器初始化函数while (1) ;void Timx_Init(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_DeInit(T

33、IM2);/ 复位TIM2 定时器TIM_TimeBaseStructure.TIM_Period = 35999;TIM_TimeBaseStructure.TIM_Prescaler = 1999;TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* Clear

34、 TIM2 update pending flag清除TIM2溢出中断标志 */TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /* Enable TIM2 Update interrupt TIM2溢出中断允许*/TIM_Cmd(TIM2, ENABLE); /* TIM2 enable counter 允许tim2计数*/在stm32f10x_it.c文件里,添加TIM2_IRQHandler (void )中断函数即可实现中断计时响应。void TIM2_IRQHandler(void)if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)=0) GPIO_SetBits(GPIOC, GPIO_Pin_13);elseGPIO_ResetBits(GPIOC,GPIO_Pin_13);TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* Clear TIM2 update pending flag清除TIM2溢出中断标志 */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁