中国海洋大学工程学院含简答程序答案修正版ARM原理及应用复习题.docx
- 文档编号:7821831
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:12
- 大小:21.16KB
中国海洋大学工程学院含简答程序答案修正版ARM原理及应用复习题.docx
《中国海洋大学工程学院含简答程序答案修正版ARM原理及应用复习题.docx》由会员分享,可在线阅读,更多相关《中国海洋大学工程学院含简答程序答案修正版ARM原理及应用复习题.docx(12页珍藏版)》请在冰豆网上搜索。
中国海洋大学工程学院含简答程序答案修正版ARM原理及应用复习题
《ARM原理及应用》复习题
填空题
1.STM32F103是_32_位单片机,内核是ARM公司的___Cortex-M3___。
2.STM32F103最高工作频率___72MHz___。
片内具有多种外设,它们分别是:
_GPIO_、_USART_、_I2C_、_SPI_、_ADC_、_DAC_、_TIM_、_RTC_、_IWDG_、_WWDG_。
3.STM32103的GPIO端口具有多种配置状态,输入有3种状态,它们分别是_模拟输入_、_浮空输入__和上拉/下拉输入;输出有4种状态,它们分别是_通用推挽输出_、_通用开漏输出_、_复用推挽输出_和_复用开漏输出_。
4.ST公司的STM32系列芯片采用了Cortex-M3__内核,STM32F103最高工作频率为72__MHz。
5.当STM32的I/O端口配置为输入时,输出功能被_禁止_,施密特触发器被激活__。
6.STM32的所有端口都有外部中断能力。
当使用外部中断线时,相应的引脚必须配置成输入模式。
7.STM32具有单独的位设置或位清除能力。
这是通过GPIOx->BRR_和GPIOx->BSRR寄存器来实现的。
8.STM32芯片内部集成的12位位ADC是一种逐次逼近型模拟数字转换器,具有16个通道个通道,可测量16个外部个外部和5个信号源个内部信号源。
9.STM32的NVIC管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现时延的中断处理,并有效地处理后到中断中断。
10.系统计时器(SysTick)提供了1个24位二进制递减计数器,具有灵活的控制机制
11.STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和向上下计数模式。
12.STM32系列ARMCortex-M3芯片支持三种复位形式,分别为上电复位、接键复位和备份复位。
简答题
1.什么是嵌入式系统?
它与通用计算机有何区别?
嵌入式系统,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”;嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。
与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。
由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。
嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。
2.ARMCortex-M3有何特点?
分支预测,哈佛结构,内置嵌套向量中断控制器,支持位绑定操作,支持串行调试,内核支持低功耗模式,高效的Thumb216/32位混合指令集,32位硬件除法和单周期乘法,支持存储器非对齐访问,定义了统一的存储器映射,极高的性价比。
3.简述Cortex-M3系统滴答定时器的功能和作用。
SysTick定时器被捆绑在NVIC中,用于产生SysTick异常。
操作系统和所有使用了时基的系统,都必须要一个硬件定时器来产生需要的“滴答”中断,作为整个系统的时基。
其对操作系统尤其重要。
例如,操作系统可以为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。
因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。
4.STM32共有那几种基本时钟信号?
4种
HSI:
高速内部时钟信号
HSE:
高速外部时钟信号
LSE:
低速外部时钟信号
LSI:
低速内部时钟信号
5.简述嵌套向量中断控制器(NVIC)的主要特性。
支持嵌套和向量中断。
自动保存和恢复处理器状态。
动态改变优先级。
简化的和确定的中断时间,中断延迟大大缩短。
具有43个可屏蔽中断通道。
现低延迟的异常和中断处理。
具有电源管理控制。
具有16个可编程的优先等级。
具有电源管理控制。
系统控制寄存器的实现。
6.简述STM32上机调试操作步骤。
(1)启动STM32开发平台程序
(2)编写/改编程序源代码
(3)静态查错无误后,进行编译,避免语法错误和低级失误。
(4)连接硬件烧录程序
(5)观察硬件是否按照预期工作,如非正常工作,优先检查代码中端口/寄存器/变量定义,中断优先级,核心程序代码是否存在错误/漏洞,再检查硬件系统是否有损坏。
(6)根据发现的bug进行debug工作,修改代码,更换/维修硬件系统,直至系统工作正常。
7.简述STM32中USART功能特点。
STM32的USART为通用同步异步收发器,其可以与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。
USART还可以利用分数波特率发生器提供宽范围的波特率选择。
STM32的USART支持同步单向通信和半双工单线通信。
同时,其也支持LIN(局部互连网),智能卡协议和IrDA(红外数据)SIRENDEC规范,以及调制解调器(CTS/RTS)操作。
STM32还具备多处理器通信能力。
另外,通过多缓冲器配置的DMA方式,还可以实现高速数据通信。
8.简述STM32中SPI功能特点。
串行通信设备接口SPI是工业标准串行协议,通常用于嵌入式系统,将微处理器连接到各种片外传感器,转换器,存储器和控制设备。
SPI可以实现主设备或从设备协议,当配置为主设备时,SPI可以连接16个的从设备,发送数据和接收数据寄存器的宽度可以配置为8位或16位。
作用有读写flash(存有字库,图片等等)芯片,与触摸屏控制器通信,读写sd卡。
9.简述STM32中TIM功能特点。
STM32提供了一个高级控制定时器(TIM1,TIM8)。
TIM1由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。
TIM1适合多种用途,包含测量输入信号的脉冲宽度,或者产生输出波形。
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
高级控制定时器TIM1和通用控制定时器TIMx是完全独立的,它们不共享任何资源,因此可以同步操作。
TIM2-TIM5是普通定时器,TIM6和TIM7是基本定时器,其时钟由APB1输出产生。
10.简述STM32中ADC功能特点。
STM32的ADC系统的主要功能特性包括如下几个方面:
ADC开关控制、ADC时钟、ADC通道选择、ADC的转换模式、中断、模拟看门狗、ADC的扫描模式、ADC的注入通道管理、间断模式、ADC的校准模式、ADC的数据对齐、可编程的通道采样时间、外部触发转换、DMA请求、双ADC模式和温度传感器。
11.什么是嵌入式系统?
嵌入式系统一般由哪几部分构成?
嵌入式系统,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”;嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。
一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成。
嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。
执行装置也称为被控对象
12.Cortex-M3的处理器有那两种工作模式和状态?
如何进行工作模式和状态的切换?
关于工作模式
Cortex-M3处理器支持2种工作模式:
线程模式和处理模式。
在复位时处理器进入“线程模式”,异常返回时也会进入该模式。
出现异常模式时处理器进入“处理模式”。
关于工作状态
Coretx-M3处理器有2种工作状态。
Thumb状态:
这是16位和32位“半字对齐”的Thumb和Thumb-2指令的执行状态。
调试状态:
处理器停止并进行调试,进入该状态。
13.简述STM32的不同复用功能的重映射功能。
IO口可以有多种用途,比如可以作为普通的输入输出口使用,也可以作为PWM通道使用,还有DAC通道等,但需要相应的配置。
14.简述STM32中I2C功能特点。
I2C(芯片间)总线接口连接微控制器和串行I2C总线。
它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。
支持标准和快速两种模式,同时与SMBus2.0兼容。
I2C模块有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线—SystemManagementBus)和PMBus(电源管理总线—PowerManagementBus)。
15.STM32高级定时器有哪些功能?
高级定时器TIM1适合多种用途,包含测量输入信号的脉冲宽度,或者产生输出波形。
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。
16.如何设置STM32的串口的波特率。
使用Usart1_Init(void)中的函数USART1->BRR=取整【(晶振频率)/(需设置的波特率)】函数即可。
17.Cortex-M3的存储空间可以分为哪几个部分,每一部分的地址范围是怎样的?
内核设备:
0xE0000000-0xE00FFFFF
片上设备:
0x40000000-0x5FFFFFFF
SRAM:
0x20000000-0x3FFFFFFF
Flash:
0x00000000-0x1FFFFFFF
18.STM32的GPIO的配置模式有那几种?
如何进行配置模式的配置?
8种
(1)GPIO_Mode_AIN模拟输入
(2)GPIO_Mode_IN_FLOATING浮空输入
(3)GPIO_Mode_IPD下拉输入
(4)GPIO_Mode_IPU上拉输入
(5)GPIO_Mode_Out_OD开漏输出
(6)GPIO_Mode_Out_PP推挽输出
(7)GPIO_Mode_AF_OD复用开漏输出
(8)GPIO_Mode_AF_PP复用推挽输出
三、编程题(完整程序)
1.编制一个循环点亮LED灯的程序。
有4个发光二极管,它们的公共极(阳极)接+5V,阴极通过限流电阻分别于PB12、PB13、PB14、PB15,每次控制其中某个LED灯点亮1S后,转到下一个LED灯亮,循环不止。
#include“main.h”
charflag=0,sec=0,sec1=0;
unsignedshortled_dat[4]={1<<12,1<<13,1<<14,1<<15};
charled_num=0;
intmain(void)
{
SysTick_Init();
Led_Init();
While
(1)
{
SysTick_Proc();
Led_Proc();
}
}
voidSysTick_Init(void)
{
SysTick->LOAD=1E6;
SysTick->CTRL=1;
}
voidSysTick_Proc(void)
{
if(SysTick->CTRL&1<<16)
{
Sec+=1;
if((sec&0xf)>9)
sec+=6;
}
}
voidLed_Init(void)
{
RCC->APB2ENR|=1<<3;
GPIOB->CRH&=0x0000ffff;
GPIOB->CRH|=0x33330000;
}
VoidLed_Proc(void)
{
if(sec!
=sec1)
{
sec1=sec;
GPIOB->BSRR=0xf000;//灭所有LED灯
GPIOB->BRR=led_dat[led_num];//亮所有LED灯
if(flag)
{
if(++led_num==4)
led_num=0;
}
else
{
if(led_num--==0)
led_num=3;
}
}
}
2.编制一个LED数码管测试程序。
数码管采用共阳极接+3.3V,阴极通过限流电阻分别于PA0、PA1、PA2、PA3、PA4、PA5、PA6和PA7,数码管的段与I/O口连接的对应关系是a->PA0,b->PA1,c->PA2,d->PA3,e->PAA4,f->PA5,g-PA6,dp->PA7,试编程在数码管实现数字0~9循环显示,每个数字显示1秒。
#include“main.h”
charflag=0,sec=0,sec1=0;
unsignedshortled_dat[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
charled_num=0;
intmain(void)
{
SysTick_Init();
Led_Init();
While
(1)
{
SysTick_Proc();
Led_Proc();
}
}
voidSysTick_Init(void)
{
SysTick->LOAD=1E6;
SysTick->CTRL=1;
}
voidSysTick_Proc(void)
{
if(SysTick->CTRL&1<<16)
{
Sec+=1;
if((sec&0xf)>9)
sec+=6;
}
}
voidLed_Init(void)
{
RCC->APB2ENR|=1<<3;
GPIOA->CRH&=0x00000000;
GPIOA->CRH|=0x33333333;
}
VoidLed_Proc(void)
{
if(sec!
=sec1)
{
sec1=sec;
GPIOA->BSRR=0xf000;//灭所有LED数码管
GPIOA->BRR=led_dat[led_num];//亮所有LED数码管
if(flag)
{
if(++led_num==10)
led_num=0;
}
else
{
if(led_num--==0)
led_num=9;
}
}
}
3.编制一个使用STM32的USART1与PC机实现串行通讯,串行口使用1位起始位、8位数据位、无校验位和1停止位,波特率位9600bps。
编程实现接收PC机发送的数据后回传给PC机
VoidUsart1_Init(void)
{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<14;
GPIOA->CRH&=0xfffff00f;
GPIOA->CRH|=0x000004b0;
USART1->BRR=0x0045;//波特率设置
USART1->CR1|=1<<2;
USART1->CR1|=1<<3;
USART1->CR1|=1<<13;
}
charUsart1_Txd(chardata)
{
USART1->DR=data;
while(!
(USART1->SR&1<<7));
returndata;
}
charUsart1_Rxd(void)
{
if(USART1->SR&1<<5)
returnUSART1->DR;
elsereturn0;
}
voidmain(void)
{
Usart1_Init();
while
(1){};
}
4.编制一个使用STM32的USART2与PC机实现串行通讯,串行口使用1位起始位、8位数据位、无校验位和1停止位,波特率位19200。
编程实现接收PC机发送的数据(大写字母)后转换为小写字母回传给PC机。
voidUsart2_Init(void)
{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<14;
GPIOA->CRL&=0xfffff00f;
GPIOA->CRL|=0x00000bb0;
USART2->BRR=416;//波特率设置
USART2->CR1|=1<<2;
USART2->CR1|=1<<3;
USART2->CR1|=1<<13;
}
charUsart2_Txd(chardata)
{
USART2->DR=data;
while(!
(USART1->SR&1<<7));
returndata;
}
charUsart2_Rxd(void)
{
if(USART2->SR&1<<5)
returnUSART2->DR;
elsereturn0;
}
voidmain(void)
{
charx;
Usart2_Init();
while
(1)
{
if(USART2->SR&1<<5)
{
x=USART2->DR;
USART2->DR=X+0x20;
}
}
}
5.编制一个使用STM32定时器的TIM1的PWM功能,实现产生周期为5ms,占空比位70%的PWM矩形波。
(系统晶振为8MHz)
voidTim1_Init(void)
{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<11;
GPIOA->CRH&=0xfffffff0;
GPIOA->CRH|=0x0000000b;
TIM1->PSC=4000;
TIM1->ARR=10;//周期=ARR*0.5ms
TIM1->CCMR1|=0x60;
TIM1->CCER|=1;
TIM1->CCR1=7;//占空比=CCR1/ARR=70%
TIM1->BDTR=1<<15;
TIM1->CR1=1;
}
voidmain(void)
{
while
(1){};
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国海洋 大学 工程学院 含简答 程序 答案 修正 ARM 原理 应用 复习题