中国海洋大学工程学院(含简答,程序答案,修正版)ARM原理及应

更新时间:2024-03-23 07:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《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系列ARM Cortex-M3芯片支持三种复位形式,分别为 上电 复位、 接键 复位和 备份 复位。 简答题

1.什么是嵌入式系统?它与通用计算机有何区别?

嵌入式系统,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”;嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。

2.ARM Cortex-M3有何特点?

分支预测, 哈佛结构, 内置嵌套向量中断控制器, 支持位绑定操作, 支持串行调试, 内核支持低功耗模式, 高效的Thumb2 16/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(红外数据)SIR ENDEC规范,以及调制解调器(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总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBus 2.0兼容。 I2C模块有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线—System Management Bus)和PMBus(电源管理总线—Power Management Bus)。

15.STM32高级定时器有哪些功能?

高级定时器TIM1适合多种用途,包含测量输入信号的脉冲宽度,或者产生输出波形。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。

16. 如何设置STM32的串口的波特率。

使用Usart1_Init(void)中的函数USART1->BRR=取整【(晶振频率)/(需设置的波特

率)】函数即可。

17.Cortex-M3的存储空间可以分为哪几个部分,每一部分的地址范围是怎样的? 内核设备:0xE000 0000-0xE00F FFFF 片上设备:0x4000 0000-0x5FFF FFFF SRAM : 0x2000 0000-0x3FFF FFFF Flash :0x0000 0000-0x1FFF FFFF

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”

char flag=0,sec=0,sec1=0;

unsigned short led_dat[4]={1<<12,1<<13,1<<14,1<<15}; char led_num=0; int main(void) {

SysTick_Init(); Led_Init(); While (1) {

SysTick_Proc(); Led_Proc();

} }

void SysTick_Init(void) {

SysTick->LOAD=1E6; SysTick->CTRL=1; }

void SysTick_Proc(void) {

if(SysTick->CTRL & 1<<16) {

Sec+=1;

if((sec & 0xf)>9) sec+=6; } }

void Led_Init(void) {

RCC->APB2ENR|=1<<3; GPIOB->CRH&=0x0000 ffff; GPIOB->CRH|=0x3333 0000; }

Void Led_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”

char flag=0,sec=0,sec1=0;

unsigned short led_dat[10]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90}; char led_num=0; int main(void)

本文来源:https://www.bwwdw.com/article/0ur8.html

Top