嵌入式系统原理复习题.docx
- 文档编号:26077333
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:11
- 大小:257.46KB
嵌入式系统原理复习题.docx
《嵌入式系统原理复习题.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理复习题.docx(11页珍藏版)》请在冰豆网上搜索。
嵌入式系统原理复习题
复习提纲
一、嵌入式系统及ARM(AdvancedRISCmachines)处理器概述
1.嵌入式系统的概念〔IEEE定义和国内普遍认同的定义〕
根据IEEE〔国际电气和电子工程师协会〕的定义:
嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置〞;
嵌入式系统是以应用为中心,以计算机技术为根底,软、硬件可裁剪,
适应应用系统对功能、可靠性、本钱、体积、功耗等严格要求的专用
计算机系统。
2.嵌入式系统的组成〔硬件组成和软件组成〕
硬件+软件
硬件:
由嵌入式微处理器、外围硬件设备组成
软件:
包括底层系统软件和用户应用软件
二、CM4体系构造
1.CM4内核三级流水线的三个阶段,如假设某嵌入式处理器有3级流水线,每级流水线所耗时间均为为2ms,那么执行25条指令需要消耗时间?
三级流水线,分别是取指、译码和执行;
为了兼容Thumb代码,读取PC会返回当前指令地址+4。
偏移量总是4,不管是执行16位指令还是32位指令,这保证了Thumb和Thumb-2指令之间的一致性。
ARM的完整拼写形式为AcornRISCMachine,CM4处理器内部正在执行的指令的地址为0x08000100,此时读取PC的值,该值为0x08000104。
2.CM4内核读取指令及访问数据的三套总线、CM4内核的两种运行模式、两种权限级别,上电复位后是什么模式什么级别
三套总线:
I-code总线D-code总线系统总线
CM4处理器有两种模式:
线程模式、handler模式,还支持两种操作级别:
特权级、非特权级〔用户级〕。
复位后是特权级下的线程模式
3.CM4内核的存放器组中,各个存放器的作用及各个存放器的访问权限级别、CM4的复位序列
R0-R7低组通用存放器;R8-R12高组通用存放器;R13堆栈存放器;(MSP,PSP)R14连接存放器;R15程序计数存放器;xPSR程序状态存放器;
程序状态存放器(xPSR)
程序状态存放器在其内部又被分为三个子状态存放器:
应用程序状态存放器〔APSR〕
中断状态存放器〔IPSR〕
执行状态存放器〔EPSR〕
通过MRS/MSR指令,这3个PSRs即可以单独访问,也可以组合访问〔2个组合,3个
组合都可以〕。
当使用三合一的方式访问时,应使用名字“xPSR〞或者“PSR〞。
三、CM4程序设计
Cortex-M4内核在执行指令时,只有一种状态,那就是Thumb状态。
1.CM4寻址方式、常用指令:
MOVAND
ORR〔有1为1,为0为0〕
BIC〔清0〕
EOR〔异或,相异出1〕SUBADDTSTTEQCMP
LDR〔加载〕
STR〔存储〕
LDRB〔8位无符号字加载〕
STRB〔8位无符号字存储〕
LDM〔多存放器加载〕
STM〔多存放器存储〕
B〔无条件跳转〕BLBXBLX
MRS〔读取特殊存放器的值到通用存放器〕
MSR〔将通用存放器的值写到特殊存放器〕
伪指令:
LDR
2.指令的条件码如:
NE〔不等于〕EQ〔等于〕LT〔小于〕GT〔大于〕等,后缀“S〞“!
〞,什么样的指令会影响APSR存放器的标志位
“S〞后缀:
指令中使用“S〞后缀,指令执行后状态存放器的条件标志位将被刷新;不使用“S〞后缀时,指令执行后状态存放器的条件标志位不会发生变化。
如果指令地址表达式中不含“!
〞后缀,那么基址存放器中的地址不会发生变化,指令中含有那么变化
NECVS
3.伪操作:
伪操作主要有符号定义伪操作、数据定义伪操作、汇编控制伪操作及其杂项伪操作等
DCB〔字节〕、DCD〔字〕、AREA〔用于定义一个代码段或数据段〕、END〔用于指示源程序完毕〕、EQU〔用于定义字符名称〕、IMPORT〔IMPORT用于通知编译器当前符号不在本文件中〕、EXPORT〔EXPORT〔或GLOBAL〕用于声明符号可以被其他文件引用。
〕
4.ATPCS规那么中存放器的使用、参数传递、子程序返回的规那么
子程序间通过存放器R0、R1、R2、R3来传递参数。
如果参数多于4个,那么多出的局部用数据栈传递。
被调用的子程序在返回前无需恢复寄存器R0-R3的内容。
在子程序中,使用存放器R4-R11来保存局部变量.如果在子程序中使用到了存放器R4-R11中的某些存放器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些存放器的值;对于子程序中没有用到的存放器那么不必进展这些操作。
在Thumb程序中,通常只能使用存放器R4-R7来保存局部变量。
存放器R13用作数据栈指针,记作sp。
在子程序中存放器R13不能用作其他用途。
存放器sp在进入子程序时的值和退出子程序时的值必须相等。
连接存放器R14〔lr〕。
它用于保存子程序的返回地址。
如果在子程序中保存了返回地址,存放器R14那么可以用作其他用途。
存放器R15是程序计数器,记作pc。
它不能用作其他用途。
ATPCS规定堆栈为FD类型,即满递减堆栈。
并且堆栈的操作是8字节对齐。
t
子程序结果返回规那么
1.结果为一个32位的整数时,可以通过存放器R0返回。
2.结果为一个64位整数时,可以通过R0和R1返回,依此类推。
3.结果为一个浮点数时,可以通过浮点运算部件的存放器f0,d0或者s0来返回。
4.结果为一个复合的浮点数时,可以通过存放器f0-fN或者d0-dN来返回。
5.对于位数更多的结果,需要通过调用内存来传递.
5.C程序如何调用汇编程序,汇编程序如何调用C程序
在汇编程序中使用EXPORT伪指令声明本子程序,使其它程序可以调用此子程序。
在C语言程序中使用extern关键字声明外部函数(声明要调用的汇编子程序),即可调用此汇编子程序。
在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数.
在调用C程序时,要正确设置入口参数,然后使用BL调用.
四、STM32F439GPIO
1.重点掌握GPIO相关存放器的定义方法及各个存放器的主要功能
2.能够编程操控某一组GPIO
#defineGPIOF_MODER(*(volatileunsignedint*)0x40021400)
#defineGPIOF_OTYPER(*(volatileunsignedint*)0x40021404)
#defineGPIOF_OSPEEDR(*(volatileunsignedint*)0x40021408)
#defineGPIOF_PUPDR(*(volatileunsignedint*)0x4002140C)
#defineGPIOF_ODR(*(volatileunsignedint*)0x40021414)
#defineRCC_AHB1ENR(*(volatileunsignedint*)0x40023830)
voidDelay(unsignedintnCount)
{
for(;nCount!
=0;nCount--);
}
voidPort_init(void)
{
RCC_AHB1ENR|=0x20;
GPIOF_MODER&=(~(0xff<<14));
GPIOF_MODER|=(0x55<<14);
GPIOF_OTYPER&=(~(0xf<<7));
GPIOF_OSPEEDR&=(~(0xff<<14));
GPIOF_OSPEEDR|=(0xaa<<14);
GPIOF_PUPDR&=(~(0xff<<14));
}
intled(void)
{
Port_init();
while
(1)
{
GPIOF_ODR|=(0xf<<7);/*ϨÃðLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR&=(~(0x8<<7));/*µãÁÁLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR|=(0xf<<7);/*ϨÃðLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR&=(~(0x4<<7));/*µãÁÁLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR|=(0xf<<7);/*ϨÃðLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR&=(~(0x2<<7));/*µãÁÁLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR|=(0xf<<7);/*ϨÃðLEDµÆ*/
Delay(0xFFFFF);
GPIOF_ODR&=(~(0x1<<7));/*µãÁÁLEDµÆ*/
Delay(0xFFFFF);
//
}
}
五、STM32F439时钟树
1.追根溯源,STM32F439的时钟源有哪4个?
HSI、HSE、LSI、LSE
STM32F439时钟树中,系统时钟SYSCLK的来源有三个,分别是:
HSI、HSE和PLLCLK。
系统时钟SYSCLK的来源有哪些?
HSI、HSE
通过设置哪个存放器能对系统时钟SYSCLK的来源进展选择?
RCC_CFGR
主锁相环PLL时钟是否就绪通过哪个存放器判断?
RCC_CR
要把GPIOF的时钟使能,需要设置哪个存放器?
RCC_AHB1ENR
各个不同总线上时钟的分频参数通过哪个存放器设置?
RCC_PLLCFGR
六、STM32F439的串口
1.异步串行通信时的数据格式
起始位
数据位〔8位或9位〕
奇偶校验位〔第9位〕
停顿位〔1,1.5,2位〕
波特率设置
2.STM32F439的USART1是否能够发送数据或是否收到数据可通过哪个存放器判断?
USART_SR
发送数据时需要把数据写入哪个存放器?
USART_DR
收到的数据通过读取哪个存放器得知?
USART_SR
3.重点掌握串口初始化操作,初始化操作中相关存放器的设置。
七、CM4异常处理、NVIC、EXTI
1.哪些异常的优先级不能编程配置?
复位、NMI、硬fault
当CM4处理器的一个异常或中断被触发,硬件自动完成哪些工作?
所有异常都在处理模式中操作。
出现异常时,自动将处理器状态保存到堆栈中,并在中断效劳程序〔ISR〕完毕时自动从堆栈中恢复。
在状态保存的同时取出向量快速地进入中断。
异常进入
当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支持的中断线数目)、NVIC_ISERn〔设置中断使能〕、NVIC_ICERn〔中断使能去除〕、NVIC_ISPRn〔中断挂起设置存放器〕、NVIC_ICPRn〔中断挂起去除存放器〕、NVIC_IPRn〔中断优先级存放器〕、NVIC_AIRCR的主要用于什么设置?
3.EXTI屏蔽某个中断线的中断请求需要设置哪个存放器?
EXTI_IMR中断线触发中断的方式〔上升沿、下降沿〕需要设置的存放器是?
(EXTI_RTSR、EXYI_FTSR)
八、定时器部件
通用定时器可以向上〔递增〕计数、向下〔递减〕计数、向上向下双向〔中心对齐〕计数模式。
1.独立看门狗的时钟来源是?
LSI
构造框图与工作原理?
在键值存放器〔IWDG_KR)中写入0xCCCC,开场启用独立看门狗。
此时计数器开场从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号〔IWDG_RESET)。
无论何时,只要在键值存放器IWDG_KR中写入0xAAAA〔通常说的喂狗〕,自动重装载存放器IWDG_RLR的值就会重新加载到计数器,从而防止看门狗复位。
如果程序异常,就无法正常喂狗,从而系统复位。
超时时间如何计算?
如何喂狗、取消写保护、启动看门狗?
Tout=(4*2^prer)*(rlr+1)/32;//单位为毫秒
Tout为看门狗溢出时间〔单位为ms〕
prer为看门狗时钟预分频值(IWDG_PRPR[2:
0]的值:
0-7)
4*2^prer最大不超过256
rlr为看门狗的重装载值〔IWDG_RLR的值〕
低速内部时钟LSI=32KHz
M
IWDG_KR=0xAAAA;//喂狗
IWDG_KR=0x5555;
IWDG_RLR=0x5555;//取消写保护
IWDG_KR=0xCCCC;//启动看门狗
2.STM32F439的定时器有哪几种?
高级定时器、通用定时器、根本定时器
通用定时器TIM3、TIM14分别由哪些局部组成?
时钟选择与触发控制电路
时基单元
输入捕获通道
输出比拟通道
选择内部时钟源时,溢出时间如何计算?
Tout=((ARR+1)*(PSC+1))/Fck_psc;
其中:
Fck_psc:
TIM3的输入时钟频率〔单位为Mhz〕
Tout:
TIM3溢出时间〔单位为us〕
ARR:
自动重载值
PSC:
预分频器值
3.TIM14输出PWM波形的原理
定时器TIM14工作在向上计数PWM模式,且当T
那么就可以得到如上的PWM示意图:
当T值小于CCR1的时候,IO输出低电平(0),当T值大于等于CCR1的时候,IO输出高电平
(1),当T到达ARR值的时候,重新归零,然后重新向上计数,依次循环。
改变CCR1的值,就可以改变PWM输出的占空比,改变ARR的值,就可以改变PWM输出的频率。
九、CM4地址空间划分
1.CM4内核访问的地址空间有多大?
划分成了哪8个局部?
4GB的地址空间被分为8个相等的局部,每个局部0.5GB,分别是Code、SRAM、Peripheral、2个RAM区、2个Device区、System。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 原理 复习题