嵌入式系统原理复习题_第1页
嵌入式系统原理复习题_第2页
嵌入式系统原理复习题_第3页
嵌入式系统原理复习题_第4页
嵌入式系统原理复习题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复习提纲一、嵌入式系统及ARM(Advanced RISC machines)处理器概述1. 嵌入式系统的概念(IEEE定义和国内普遍认同的定义)根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”;嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。2. 嵌入式系统的组成(硬件组成和软件组成)硬件+软件硬件:由嵌入式微处理器、外围硬件设备组成软件:包括底层系统软件和用户应用软件二、CM4体系结构1. CM4内核三级流水线的三个阶段,如假设某嵌入式处理器有3级

2、流水线,每级流水线所耗时间均为为2ms,则执行25条指令需要耗费时间?三级流水线,分别是取指、译码和执行;为了兼容Thumb代码,读取PC会返回当前指令地址+4。偏移量总是4, 不管是执行16位指令还是32位指令, 这保证了Thumb和Thumb-2指令之间的一致性。ARM的完整拼写形式为 Acorn RISC Machine ,CM4处理器内部正在执行的指令的地址为0x08000100,此时读取PC的值,该值为 0x08000104 。2. CM4内核读取指令及访问数据的三套总线、CM4内核的两种运行模式、两种权限级别,上电复位后是什么模式什么级别三套总线:I-code总线 D-code总线

3、 系统总线CM4处理器有两种模式:线程模式、handler模式,还支持两种操作级别:特权级、非特权级(用户级)。复位后是特权级下的线程模式 3. CM4内核的寄存器组中,各个寄存器的作用及各个寄存器的访问权限级别、CM4的复位序列R0-R7 低组通用寄存器;R8-R12高组通用寄存器;R13堆栈寄存器;(MSP,PSP)R14连接寄存器;R15程序计数寄存器;xPSR程序状态寄存器;程序状态寄存器(xPSR)程序状态寄存器在其内部又被分为三个子状态寄存器:应用程序状态寄存器( APSR)中断状态寄存器( IPSR)执行状态寄存器( EPSR)通过 MRS/MSR 指令,这 3 个 PSRs 即

4、可以单独访问,也可以组合访问( 2 个组合, 3 个组合都可以)。当使用三合一的方式访问时,应使用名字“ xPSR”或者“ PSR”。三、 CM4程序设计Cortex-M4内核在执行指令时,只有一种状态,那就是Thumb状态。1. CM4寻址方式、常用指令: MOV AND ORR(有1为1,为0为0) BIC(清0) EOR(异或,相异出1) SUB ADD TST TEQ CMP LDR(加载) STR(存储) LDRB(8位无符号字加载) STRB(8位无符号字存储) LDM(多寄存器加载) STM(多寄存器存储) B(无条件跳转) BL BX BLX MRS(读取特殊寄存器的值到通用寄

5、存器) MSR(将通用寄存器的值写到特殊寄存器)伪指令:LDR2. 指令的条件码如:NE(不等于) EQ(等于) LT(小于) GT(大于)等,后缀“S”“!”,什么样的指令会影响APSR寄存器的标志位“S”后缀:指令中使用“S”后缀,指令执行后状态寄存器的条件标志位将被刷新;不使用“S”后缀时,指令执行后状态寄存器的条件标志位不会发生变化。如果指令地址表达式中不含“!”后缀,则基址寄存器中的地址不会发生变化,指令中含有则变化N E C V S3. 伪操作:伪操作主要有符号定义伪操作、数据定义伪操作、汇编控制伪操作及其杂项伪操作等DCB(字节)、DCD(字)、AREA(用于定义一个代码段或数据

6、段)、END(用于指示源程序结束)、EQU(用于定义字符名称)、IMPORT(IMPORT用于通知编译器当前符号不在本文件中)、EXPORT(EXPORT(或GLOBAL)用于声明符号可以被其他文件引用。)4. ATPCS规则中寄存器的使用、参数传递、子程序返回的规则子程序间通过寄存器R0、R1、R2、 R3来传递参数。如果参数多于4个,则多出的部分用数据栈传递。被调用的子程序在返回前无需恢复寄存器R0-R3的内容。在子程序中,使用寄存器R4-R11来保存局部变量如果在子程序中使用到了寄存器R4-R11中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程

7、序中没有用到的寄存器则不必进行这些操作。在Thumb程序中,通常只能使用寄存器R4-R7来保存局部变量。寄存器R13用作数据栈指针,记作sp。在子程序中寄存器R13不能用作其他用途。寄存器sp在进入子程序时的值和退出子程序时的值必须相等。连接寄存器R14(lr)。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。寄存器R15是程序计数器,记作pc。它不能用作其他用途。ATPCS规定堆栈为FD类型,即满递减堆栈。并且堆栈的操作是8字节对齐。t子程序结果返回规则1.结果为一个32位的整数时,可以通过寄存器R0返回。2.结果为一个64位整数时,可以通过R0和R

8、1返回,依此类推。3.结果为一个浮点数时,可以通过浮点运算部件的寄存器f0,d0或者s0来返回。4.结果为一个复合的浮点数时,可以通过寄存器f0-fN或者d0-dN来返回。5.对于位数更多的结果,需要通过调用内存来传递.5. C程序如何调用汇编程序,汇编程序如何调用C程序在汇编程序中使用EXPORT 伪指令声明本子程序,使其它程序可以调用此子程序。在C 语言程序中使用extern 关键字声明外部函数(声明要调用的汇编子程序),即可调用此汇编子程序。在汇编程序中使用IMPORT 伪指令声明将要调用的C 程序函数.在调用C 程序时,要正确设置入口参数,然后使用BL 调用.四、STM32F439 G

9、PIO1. 重点掌握GPIO相关寄存器的定义方法及各个寄存器的主要功能2. 能够编程操控某一组GPIO #define GPIOF_MODER (*(volatile unsigned int *)0x40021400)#define GPIOF_OTYPER (*(volatile unsigned int *)0x40021404)#define GPIOF_OSPEEDR (*(volatile unsigned int *)0x40021408)#define GPIOF_PUPDR (*(volatile unsigned int *)0x4002140C)#define GPIOF

10、_ODR (*(volatile unsigned int *)0x40021414)#define RCC_AHB1ENR(*(volatile unsigned int *)0x40023830)void Delay(unsigned int nCount) for(; nCount != 0; nCount-);void Port_init(void)RCC_AHB1ENR |= 0x20;GPIOF_MODER &= (0xff<<14);GPIOF_MODER |= (0x55<<14);GPIOF_OTYPER &= (0xf<<

11、7);GPIOF_OSPEEDR&= (0xff<<14);GPIOF_OSPEEDR |= (0xaa<<14);GPIOF_PUPDR &= (0xff<<14);int led(void) Port_init(); while (1) GPIOF_ODR |= (0xf<<7); /*ϨÃðLEDµÆ*/ Delay(0xFFFFF); GPIOF_ODR &= (0x8<<7); /*µãÁÁLED&#

12、181;Æ*/ Delay(0xFFFFF); GPIOF_ODR |= (0xf<<7); /*ϨÃðLEDµÆ*/ Delay(0xFFFFF); GPIOF_ODR &= (0x4<<7); /*µãÁÁLEDµÆ*/ Delay(0xFFFFF); GPIOF_ODR |= (0xf<<7); /*ϨÃðLEDµÆ*/ Delay(0xFFFFF);

13、GPIOF_ODR &= (0x2<<7); /*µãÁÁLEDµÆ*/ Delay(0xFFFFF); GPIOF_ODR |= (0xf<<7); /*ϨÃðLEDµÆ*/ Delay(0xFFFFF); GPIOF_ODR &= (0x1<<7); /*µãÁÁLEDµÆ*/ Delay(0xFFFFF);/ 五、STM32F439 时钟树1 追根溯源,ST

14、M32F439的时钟源有哪4个?HSI 、HSE 、LSI 、LSESTM32F439时钟树中,系统时钟SYSCLK的来源有三个,分别是:HSI、HSE和PLLCLK。系统时钟SYSCLK的来源有哪些?HSI 、HSE通过设置哪个寄存器能对系统时钟SYSCLK的来源进行选择?RCC_CFGR主锁相环PLL时钟是否就绪通过哪个寄存器判断?RCC_CR要把GPIOF的时钟使能,需要设置哪个寄存器?RCC_AHB1ENR各个不同总线上时钟的分频参数通过哪个寄存器设置?RCC_PLLCFGR六、STM32F439的串口1. 异步串行通信时的数据格式 起始位 数据位(8位或9位) 奇偶校验位(第9位)

15、停止位(1,1.5,2位) 波特率设置2. STM32F439的USART1是否能够发送数据或是否收到数据可通过哪个寄存器判断?USART_SR发送数据时需要把数据写入哪个寄存器?USART_DR收到的数据通过读取哪个寄存器得知?USART_SR3. 重点掌握串口初始化操作,初始化操作中相关寄存器的设置。七、CM4异常处理、NVIC、EXTI1. 哪些异常的优先级不能编程配置?复位、NMI、硬fault当CM4处理器的一个异常或中断被触发,硬件自动完成哪些工作?所有异常都在处理模式中操作。出现异常时,自动将处理器状态保存到堆栈中,并在中断服务程序(ISR)结束时自动从堆栈中恢复。在状态保存的同

16、时取出向量快速地进入中断。 异常进入当CM4处理器的一个异常或中断被触发,硬件自动完成如工作:(1)CM4中断控制器根据当前状态和中断的抢占级别来确定是响应该中断,还是先挂起,并更新相应的寄存器状态。(2)通过Dbus保存处理器状态,将下面的8个寄存器按顺序保存入SP(MSP或PSP)指向的系统堆栈。(3)CM4通过Ibus从异常向量表取得对应的中断向量,并开始读取ISR指令,这一步几乎与压栈同时进行。(4)CM4处理器更新到handler模式,SP切换到MSP,更新IPSR为新响应的异常编号,更新PC,更新LR寄存器为EXC_RETURN。2. NVIC的寄存器ICTR(用于显示NVIC支持

17、的中断线数目)、NVIC_ISERn(设置中断使能)、NVIC_ICERn(中断使能清除)、NVIC_ISPRn(中断挂起设置寄存器)、NVIC_ICPRn(中断挂起清除寄存器)、NVIC_IPRn(中断优先级寄存器)、NVIC_AIRCR的主要用于什么设置?3. EXTI屏蔽某个中断线的中断请求需要设置哪个寄存器?EXTI_IMR中断线触发中断的方式(上升沿、下降沿)需要设置的寄存器是?(EXTI_RTSR、EXYI_FTSR)8、 定时器部件通用定时器可以向上(递增)计数、向下(递减)计数、向上向下双向(中心对齐)计数模式。1. 独立看门狗的时钟来源是?LSI结构框图与工作原理?在键值寄存

18、器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。如果程序异常,就无法正常喂狗,从而系统复位。超时时间如何计算?如何喂狗、取消写保护、启动看门狗?Tout=(4*2prer)*(rlr+1)/32; /单位为毫秒Tout为看门狗溢出时间(单位为ms)prer为看门狗时钟预分频值(IWDG_PR PR2:0的值:0-7)4*2prer最大不超过256 rlr为看门狗的重装载值(IWDG_RLR的值)低速内部时钟LSI=32 KHz M IWDG_KR=0xAAAA;/喂狗IWDG_KR =0x5555;IWDG_RLR=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论