当前位置:文档之家› stm32试题及答案

stm32试题及答案

stm32试题及答案

STM32习题集

一、选择题

1.Cortex-M处理器采用的架构是( D )

(A)v4T (B)v5TE (C)v6 (D)v7 2.NVIC可用来表示优先权等级的位数可配置为是( D )

(A)2 (B)4 (C)6 (D)8

3.Cortex-M系列正式发布的版本是( A )

(A)Cortex-M3 (B)Cortex-M4 (C)Cortex-M6 (D)Cortex-M8 4.Cortex-M3的提供的流水线是( B )

(A)2级(B)3级(C)5级(D)8级

5.Cortex-M3的提供的单周期乘法位数是( C )

(A)8 (B)16 (C)32 (D)64

6.STM32处理器的USB接口可达( B )

(A)8Mbit/s (B)12Mbit/s (C)16Mbit/s (D)24Mbit/s 4.下面是Context-M3处理器代码执行方式的是( A )

(A)特权方式(B)普通方式(C)Handle方式(D)Thread方式5.下面是Context-M3处理器的工作模式的是( A )

(A)Thread模式(B)Thumb模式(C)Thumb-2模式(D)Debug模式6.下列是Cortex – M3 处理器可以使用的堆栈的栈是( B )

(A)线程栈(B)进程栈(C)多线程栈(D)空栈

7.Context – M3处理器的寄存器r14代表( B )

(A)通用寄存器(B)链接寄存器(C)程序计数器(D)程序状态寄存器

8.Handle模式一般使用( A )

(A)Main_SP (B)Process_SP (C)Main_SP和Process_SP (D)Main_SP或Process_SP

9.Cortex – M3使用的存储器格式是( D )

(A)小端格式(B)大端格式(C)小端或大端格式(D)没有正确答案

10.Cortex – M3的存储格式中专用外设总线区域可以使用( A )

(A)小端格式(B)大端格式(C)小端或大端格式(D)没有正确答案

11.每个通用I/O端口有()个32位的配置寄存器,()个32位的数据寄存器,()个32位的置位/复位寄存器,()个16位的复位寄存器,( B )个32位的锁定寄存器(A)2,1,2,1,1 (B)2,2,1,1,1 (C)2,2,2,1,1 (D)2,2,1,2,1 12.( A )寄存器的目的就是用来允许对GPIO寄存器进行原子的读/修改操作

(A)GPIOX_BSRR和GPIOX_BRR (B)GPIOX_CRL和GPIOX_CRH (C)GPIOX_BSRR和GPIOX_LCKR (D)GPIOX_IDR和GPIOX_ODR 13.所有的GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为( A )时可以是激活的或者非激活的

(A)输入(B)输出(C)推挽(D)开漏

14.端口输入数据寄存器的地址偏移为( B )

(A)00H (B)08H(C)0CH (D)04H

stm32试题及答案

STM32习题集 一、选择题 1.Cortex-M处理器采用的架构是( D ) (A)v4T (B)v5TE (C)v6 (D)v7 2.NVIC可用来表示优先权等级的位数可配置为是( D ) (A)2 (B)4 (C)6 (D)8 3.Cortex-M系列正式发布的版本是( A ) (A)Cortex-M3 (B)Cortex-M4 (C)Cortex-M6 (D)Cortex-M8 4.Cortex-M3的提供的流水线是( B ) (A)2级(B)3级(C)5级(D)8级 5.Cortex-M3的提供的单周期乘法位数是( C ) (A)8 (B)16 (C)32 (D)64 6.STM32处理器的USB接口可达(B ) (A)8Mbit/s (B)12Mbit/s (C)16Mbit/s (D)24Mbit/s 4.下面是Context-M3处理器代码执行方式的是( A ) (A)特权方式(B)普通方式(C)Handle方式(D)Thread方式5.下面是Context-M3处理器的工作模式的是( A ) (A)Thread模式(B)Thumb模式(C)Thumb-2模式(D)Debug模式6.下列是Cortex – M3 处理器可以使用的堆栈的栈是( B ) (A)线程栈(B)进程栈(C)多线程栈(D)空栈7.Context – M3处理器的寄存器r14代表( B ) (A)通用寄存器(B)链接寄存器(C)程序计数器(D)程序状态寄存器 8.Handle模式一般使用( A ) (A)Main_SP (B)Process_SP (C)Main_SP和Process_SP (D)Main_SP或Process_SP 9.Cortex – M3使用的存储器格式是( D ) (A)小端格式(B)大端格式(C)小端或大端格式(D)没有正确答案 10.Cortex – M3的存储格式中专用外设总线区域可以使用( A ) (A)小端格式(B)大端格式(C)小端或大端格式(D)没有正确答案 11.每个通用I/O端口有()个32位的配置寄存器,()个32位的数据寄存器,()个32位的置位/复位寄存器,()个16位的复位寄存器,(B )个32位的锁定寄存器(A)2,1,2,1,1 (B)2,2,1,1,1 (C)2,2,2,1,1 (D)2,2,1,2,1 12.( A )寄存器的目的就是用来允许对GPIO寄存器进行原子的读/修改操作 (A)GPIOX_BSRR和GPIOX_BRR (B)GPIOX_CRL和GPIOX_CRH (C)GPIOX_BSRR和GPIOX_LCKR (D)GPIOX_IDR和GPIOX_ODR 13.所有的GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为( A )时可以是激活的或者非激活的 (A)输入(B)输出(C)推挽(D)开漏 14.端口输入数据寄存器的地址偏移为( B ) (A)00H (B)08H(C)0CH (D)04H

STM32嵌入式系统实验报告模板

实验一使用固件函数库创建库函数模板 一、实验目的 1. 熟悉STM32的开发环境MDK Keil和仿真软件Proteus 2. 熟悉STM32的固件库函数文件夹 3. 掌握STM32固件库的使用方法 二、实验内容 1.开发自己的固件库函数模板 三、预备知识 掌握基于STM32固件库进行编程的方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:嵌入式开发平台,USB转串口数据线; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:Keil μVision5 IDE; 五、实验过程 1.创建本地文件夹和软件中的文件夹 2. 对软件中的文件夹进行配置

3.软件设计及代码(写一个简单的main函数)

六、遇到的问题及解决方法

实验二使用STM32固件库点亮LED灯 一、实验目的 1. 掌握STM32固件库的使用方法 2. 掌握基于库函数模板的开发方法 3. 掌握基于固件库进行GPIO端口编程的方法 二、实验内容 1. 使用Proteus软件设计点亮LED灯电路 2. 基于固件库进行编程 3. 基于固件库编程控制GPIO端口的输出,进而控制LED灯的显示状态 三、预备知识 掌握基于STM32固件库进行编程的方法;掌握Proteus软件的使用方法;掌握GPIO端口的组成、工作方式、编程方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上; 内存:1GB及以上; 实验设备:嵌入式开发平台,USB转串口数据线; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2; 集成开发环境:Keil μVision5 IDE; 五、实验过程 1.LED灯电路设计 2. GPIO初始化过程

STM32练习题2(关于IO,有答案)

一、填空题 1.当STM32的I/O端口配置为输入时,输出缓冲器被禁止,施密特触发输入被激活。根据输入配置(上拉,下拉或浮动)的不同,该引脚的弱上拉和下拉电阻被连接。出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据缓冲器的读访问可得到I/O状态。 2.STM32的所有端口都有外部中断能力。当使用外部中断线时,相应的引脚必须配置成输入模式。 3.STM32具有单独的位设置或位清除能力。这是通过_GPIOx BSRR____和GPIOx BRR 寄存器来实现的。 4.ST公司还提供了完善的通用IO接口库函数,其位于stm32f10x_gpio.c ,对应的头文件为stm32f10x_gpio.h。 5.为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。这时,复用功能不再映射到它们原始分配的引脚上。在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO MAPR) 来实现引脚的重新映射。 二、选择题 1.在APB2上的I/O脚的翻转速度为(A)。 A.18MHz B.50MHz C.36MHz D.72MHz 4.当输出模式位MODE[1:0]=“10”时,最大输出速度为(B)。 A.10MHz B.2MHz C.50MHz D.72MHz 三、简答题 1.简述不同复用功能的重映射。 答:为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。这时,复用功能不再映射到它们原始分配的引脚上。在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO MAPR) 来实现引脚的重新映射。 2.简述STM32的GPIO的一些主要特点(至少5个)。 答: 1.通用IO,可以作为输入、输出等功能。 2.单独的位设置和位清除 3.外部中断唤醒线 4.复用功能/重映射 5.GPIO锁定机制 四、编程题 编写一个初始化定时器的程序。 GPIO_InitTypedef GPIO_InitStructure; GPIO_InitStructure.GPIO_pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_pp; GPIO_InitStructure.GPIO_Speed=GPIO_Seep_50Mhz; GPIO_Init(GPIOC,&GPIO_InitStructure);

STM32 实验2报告

实验2 MINI STM32按键控制LED灯实验 一、实验目的 1、掌握嵌入式程序设计流程。 2、熟悉STM32固件库的基本使用。 二、实验内容 1、编程使用I/O口作为输入,控制板载的两个LED 灯。 2、使用固件库编程。 三、实验设备 硬件:PC机一台 MINI STM32开发板一套 软件:RVMDK V3.8 一套 Windows XP 一套 四、实验步骤 1、设计工程,使用固件库来编程设置。 1.1、在这里我们建立一个文件夹为: STM32-Projects. 点击Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32-Projecst 之下,在这个目录下面建立子文件夹shiyan1, 然后定位到shiyan1目录下面,我们的工程文件就都保存到shiyan1 文件夹下面。工程命名为shiyan1, 点击保存. 1.2、这里我们定位到STMicroelectronics 下面的STM32F103RB( 针对我们的mini 板子是这个型号。

1.3、弹出对话框“Copy STM32 Startup Code to project ….”,询问是否添加启动代码到我们的工程中,这里我们选择“否”,因为我们使用的ST固件库文件已经包含了启动文件。 1.4、接下来,我们在Template 工程目录下面,新建3 个文件夹CORE, USER, STM32F10x_FWLib 。USER 用来放我们主函数文件main.c, 以及其他包括 system_stm32f10x.c 等等,CORE 用来存放启动文件等,STM32F10x_FWLib 文件夹顾名思义用来存放ST官方提供的库函数源码文件. 1.5、.打开官方固件库包,定位到我们之前准备好的固件库包的目录。 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,将目录下面的src,inc 文件夹copy 到我们刚才建立的STM32F10x_FWLib 文件夹下面。 1.6、我们将文件加入我们的工程中去。右键点击Target1,选择Manage Components

stm32试题

1.Cortex-M处理器采用的架构是( D) (A)v4T (B)v5TE (C)v6 (D)v7 2.NVIC可用来表示优先权等级的位数可配置为是(D ) (A)2 (B)4 (C)6 (D)8 4.Cortex-M3的提供的流水线是( B) (A)2级(B)3级(C)5级(D)8级 5.Cortex-M3的提供的单周期乘法位数是(C ) (A)8 (B)16 (C)32 (D)64 6.STM32处理器的USB接口可达( B ) (A)8Mbit/s (B)12Mbit/s (C)16Mbit/s (D)24Mbit/s 7.Context – M3处理器的寄存器r14代表( B ) (A)通用寄存器(B)链接寄存器(C)程序计数器(D)程序状态寄存器 8.Handle模式一般使用(A ) (A)Main_SP (B)Process_SP (C)Main_SP和Process_SP (D)Main_SP或Process_SP 11.每个通用I/O端口有()个32位的配置寄存器,()个32位的数据寄存器,()个32位的置位/复位 寄存器,()个16位的复位寄存器,( B )个32位的锁定寄存器 (A)2,1,2,1,1 (B)2,2,1,1,1 (C)2,2,2,1,1 (D)2,2,1,2,1 12.(A )寄存器的目的就是用来允许对GPIO寄存器进行原子的读/修改操作 (A)GPIOX_BSRR和GPIOX_BRR (B)GPIOX_CRL和GPIOX_CRH(C)GPIOX_BSRR和GPIOX_LCKR (D)GPIOX_IDR和GPIOX_ODR 13.所有的GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为( A)时可以是激活的或者非激活的 (A)输入(B)输出(C)推挽(D)开漏 14.端口输入数据寄存器的地址偏移为( B ) (A)00H (B)08H(C)0CH (D)04H 17.每个I/O端口位可以自由的编程,尽管I/O端口寄存器必须以( B )的方式访问 (A)16位字(B)16位字节(C)32位字节(D)32位字 19.固件库中的标志状态(FlagStatus)类型被赋予以下两个值( A) (A)ENABLE或者DISABLE (B)SUCCESS或者ERROR (C)SET或者RESTE (D)YES或者NO 20.STM32F107V有( C )可屏蔽中断通道 (A)40 (B)50 (C)60 (D)70 21.STM32F107V采用( B )位来编辑中断的优先级 (A)4 (B)8 (C)16 (D)32 22.向量中断控制器最多可支持( C )个IRQ中断 (A)127 (B)128 (C)240 (D)255 23.系统控制寄存器 NVIC 和处理器内核接口紧密耦合,主要目的是( C ) (A)结构更紧凑,减小芯片的尺寸 (B)连接更可靠,减小出错的概率 (C)减小延时,高效处理最近发生的中断 (D)无所谓,没有特别的意思,远一点也没有关系 24.关于中断嵌套说法正确的是(B ) (A)只要响应优先级不一样就有可能发生中断嵌套 (B)只要抢占式优先级不一样就有可能发生中断嵌套 (C)只有抢占式优先级和响应优先级都不一才有可能发生中断嵌套 (D)以上说法都不对 25.在STM32107向量中断控制器管理下,可将中断分为(B )组

ARM原理及应用复习题(附答案)

《ARM原理及应用》复习题 填空题 1.STM32F103是_32_位单片机,内核是ARM公司的___Cortex-M3___。 2.STM32F103最高工作频率___72MHz___。片内具有多种外设,它们分别是:_GPIO_、_USART_、_I2C_、_SPI_、_ADC_、_DAC_、_TIM_、_RTC_、_IWDG_、_WWDG_。 IWDG:独立看门狗 WWDG:窗口看门狗 3.STM32103的GPIO端口具有多种配置状态,输入有3种状态,它们分别是_模拟输入_、_浮空输入__和上拉/下拉输入;输出有4种状态,它们分别是_通用推挽输出_、_通用开漏输出_、_复用推挽输出_和_复用开漏输出_。 5.当STM32I/O端口配置为输入时,输出功能被_禁止_,施密特触发器被激活__。 6.STM32的所有端口都有外部中断能力。当使用外部中断线时,相应的引脚必须配置成 输入模式。 7.STM32具有单独的位设置或位清除能力。这是通过GPIOx->BSRR_和GPIOx->BRR寄存器来实现的。 8.STM32芯片内部集成的12位位ADC是一种逐次逼近(比较)型模拟数字转换器,具有18个通道,可测量16个外部和2个内部信号源。 9.STM32的NVIC管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现时延的中断处理,并有效地处理后到中断。 10.系统计时器(SysTick)提供了1个24位二进制递减计数器,具有灵活的控制机制11.STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和向上下计数模式。 12.STM32系列ARM Cortex-M3芯片支持三种复位形式,分别为上电复位、按键复位和备份复位。 简答题 1.什么是嵌入式系统?嵌入式系统一般由哪几部分构成?它与通用计算机有何区别? 答: 是一种嵌入受控器件内部,为特定应用而设计的专用计算机系统,具有“嵌入性”、“专用性”和“计算机系统”3个基本要素。//它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。//嵌入式系统通常执行的是带有特定要求的预先定义的任务,强调控制能力与控制的可靠性;而通用计算机则可以通过安装各种软件执行各种不同的任务,强调高速、海量的数值计算。 2.ARM Cortex-M3有何特点? 答: 采用哈佛结构的32位处理器内核,具有高性能、实时功能、数字信号处理、低功耗与低电压操作特性,同时还保持了集成度高和易于开发的特点。 3.简述Cortex-M3系统滴答定时器的功能和作用。 答:

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设计报告

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设 计报告 NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告 学生姓名: 学号: 学院: 专业班级: 指导教师: 同组成员: 2016年 12 月 26 日 嵌入式系统课程设计报告 一、课程设计目的 本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一 次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。 二、设计题目及要求 2.1 设计题目: 基于STM32和uC/OS-II的多任务设计 2.2 功能实现:

使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。 2.3 设计要求: 理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。 四个任务分别为: (1)驱动1个LED指示灯闪烁、 (2)由3个LED指示灯组成流水灯 (3)驱动蜂鸣器发出响声。 (4)利用swd方式进行printf输出。 三、设计原理说明 3.1 硬件说明 本次课程设计主要使用的是STM32 神舟 IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。 (1)开发板资源图 - 1 - 嵌入式系统课程设计报告

STM32期末考试答案解析详解

简述嵌套向量中断控制器(NVI C)的主要特性。 答:STM32的嵌套向量中断控制器(NVIC) 管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现低延迟的中断处理,并有效地处理晚到的中断。STM32嵌套向量中断控制器(NVIC)的主要特性如下:q 具有43 个可屏蔽中断通道(不包含16 个Cortex-M3 的中断线)。q 具有16 个可编程的优先等级。q 可实现低延迟的异常和中断处理。q 具有电源管理控制。q 系统控制寄存器的实现。 1.简述STM32的ADC系统的功能特性。 答:STM32的ADC系统的主要功能特性包括如下几个方面:ADC开关控制、ADC时钟、ADC通道选择、ADC的转换模式、中断、模拟看门狗、ADC的扫描模式、ADC的注入通道管理、间断模式、ADC 的校准模式、ADC的数据对齐、可编程的通道采样时间、外部触发转换、DMA请求、双ADC模式和温度传感器。 2.简述STM32的双ADC工作模式。 答:在有两个ADC的STM32器件中,可以使用双ADC模式。在双ADC模式里,根据ADC_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同时触发。双ADC工作模式主要包括如下几种:同时注入模式、同时规则模式、快速交替模式、慢速交替模式、交替触发模式和独立模式。 1.简述STM32的USART的功能特点。、 答:STM32的USART为通用同步异步收发器,其可以与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART还可以利用分数波特率发生器提供宽范围的波特率选择。STM32的USART支持同步单向通信和半双工单线通信。同时,其也支持LIN(局部互连网),智能卡协议和IrDA(红外数据)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。STM32还具备多处理器通信能力。另外,通过多缓冲器配置的DMA方式,还可以实现高速数据通信。 1.简述STM32的高级控制定时器TIM1的结构。

stm32课程设计报告

利用TIM定时器的中断和定时功能实现跑马灯 一、原理及目的 1、学习stm32库开发 2、理解和熟悉I/O的使用; 3、进一步掌握定时器、中断处理程序的编程方法 4、利用库函数开发实现跑马灯 二、电路原理图 三、流程图 四、软件算法(代码) 1、Main.c #include "stm32f10x.h" #include "bsp_led.h" #include "bsp_TiMbase.h" volatile u32 time = 0; int i=0;

int main(void) { LED_GPIO_Config(); TIM2_Configuration(); TIM2_NVIC_Configuration(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); while(1) { if ( time == 1000 ) { time = 0; i++; if(i>=3) i=0; switch(i) { case 0: LED1(OFF);LED2(OFF);LED3(ON);break; case 1: LED1(ON);LED2(OFF);LED3(OFF);break; case 2: LED1(OFF);LED2(ON);LED3(OFF);break; } } }} 2、led.c #include "bsp_led.h" void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GP IO_Pin = GPIO_Pin_4|GPIO_Pin_3; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_0); GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3); } 3、led.h #ifndef __LED_H #define __LED_H #include "stm32f10x.h" #define ON 0

基于STM32的嵌入式系统应用设计》课程实验报告

《基于STM32的嵌入式系统应用设计》课程实验报告 班级:电信工程15-01班 学号:5415230301 姓名: 指导老师: 成绩

实验一流水灯和按键实验 一、目的与任务 目的:掌握STM32开发环境,掌握从无到有的构建工程,学会GPIO基本操作。 任务:编写代码下载到目标板,观察效果。如未达到理想效果,检查和修改代码,再次编译下载直到成功。记录实验过程,完成实验报告。 二、内容、要求与安排方式 1、实验内容与要求: 1)熟悉MDK KEIL开发环境,构建基于HAL库的工程。 2)编写代码实现流水灯工程,按键后能改变流水灯速度。 3)通过ISP下载代码到实验板,查看运行结果。 4)使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。 2、实验安排方式:采用1人1组,上机编程在STM32实验板上实验。 三、实验设备 1、所用设备:PC计算机(宿主机)、STM32实验板、JLINK。 2.消耗性器材:无。 四、实验过程 五、程序清单 #include "system.h" #include "SysTick.h" #include "led.h" #include "key.h" int main()

{ u8 key; SysTick_Init(72); LED_Init(); KEY_Init(); while(1) { static u8 j=1000; key=KEY_Scan(0); //é¨?è°′?ü switch(key) { case KEY_UP: j=j-100;break; //°′??K_UP°′?ü μ?ááD2??ê?μ? case KEY_DOWN: j=j+100;break; //°′??K_DOWN°′?ü?¨?eD2??ê?μ? } switch(j) { case(0):j=2000;break; case(2000):j=100;break; } led1=0; led2=1;led3=1; led4=1; led5=1; led6=1;led7=1;led8=1; //1áá delay_ms(j); led1=1; led2=0;led3=1; led4=1; led5=1; led6=1;led7=1;led8=1; //2áá delay_ms(j); led1=1; led2=1;led3=0; led4=1; led5=1; led6=1;led7=1;led8=1; //3áá delay_ms(j);

STM32考试习题集与答案解析

STM32考试习题及答案 一、填空题 1.当STM32的I/O端口配置为输入时,输出缓冲器被禁止,施密特触发输入被激活。根据输入配置(上拉,下拉或浮动)的不同,该引脚的弱上拉和下拉电阻被连接。出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。 2.STM32的所有端口都有外部中断能力。当使用外部中断线时,相应的引脚必须配置成输入模式。 3.STM32具有单独的位设置或位清除能力。这是通过GPIOx_BSRR 和GPIOx_BRR 寄存器来实现的。 4.ST公司还提供了完善的通用IO接口库函数,其位于stm32f10x_gpio.c ,对应的头文件为stm32f10x_gpio.h 。 5.为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。这时,复用功能不再映射到它们原始分配的引脚上。在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR) 来实现引脚的重新映射。 二、选择题 1.在APB2上的I/O脚的翻转速度为(A )。 A.18MHz B.50MHz C.36MHz D.72MHz 4.当输出模式位MODE[1:0]=“10”时,最大输出速度为(B )。 A.10MHz B.2MHz C.50MHz D.72MHz 三、简答题 1.简述不同复用功能的重映射。 答:为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。这时,复用功能不再映射到它们原始分配的引脚上。在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)来实现引脚的重新映射。各个复用功能的重映射可以参阅正文的介绍,由于内容比较多,正文介绍非常详细,这里省略。 2.简述STM32的GPIO的一些主要特点(至少5个)。 答:主要特点如下:

单片机STM32实验报告

实验报告 课程名称:单片微机原理与车载系统 学生姓名蒋昭立 班级电科1601 学号16401700119 指导教师易吉良 成绩 2018年12月17日

实验1 GPIO实验 1.1 实验目的 1)熟悉MDK开发环境; 2)掌握STM32单片机的GPIO使用方法。 1.2 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 1.3基本实验内容 1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本_V1.0》第3章,安装MDK 并新建test工程,运行例程,在串口窗宽观察结果,并记录如下: 从图片可以看出,例程运行成功,没有错误。 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本_V1.0》第8章。实现功能:3 个按钮(KEY_UP、KEY0和KEY1),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中KEY_UP 控制蜂鸣器,按一次叫,再按一次停;KEY1 控制DS1,按一次亮,再按一次灭;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。 理解连续按概念及其实现代码。参数mode 为0 的时候,KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。当mode 为1 的时候,KEY_Scan 函数将支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。

STM32 MDK实验报告

姓名:楚昕班级:轨道1502班学号:201523050224 1.实验目的 知道如何建立一个程序。 2.图

3.实验步骤 (1)建立一个文件夹为Template (2)点击MDK的菜单:Project–>New Uvision Project,然后将目录定位到刚才建立的文 件夹Template之下,在这个目录下面建立子文件夹USER (3)出现一个选择CPU的界面,就是选择我们的芯片型号 (4)在Template工程目录下面,新建3个文件夹CORE,OBJ以及STM32F10x_FWLib (5)将固件库包里面相关的启动文件复制到我们的工程目录CORE之下 (6)定位到目录: STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER 目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER 目录下面。 (7)右键点击Target1,选择Manage Project Items,将需要的固件库相关文件复制到了我们 的工程目录下面 (8)往Group里面添加我们需要的文件 (9)编译工程,点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”, 然后选择目录为我们上面新建的OBJ目录 4.总结 (1)Template.uvprojx是工程文件,非常关键,不能轻易删除。Listings和Objects文件夹是 MDK自动生成的文件夹,用于存放编译过程产生的中间文件。新建一个OBJ文件夹,用来存放编译中间文件。 (2)STM32F10x_FWLib。CORE用来存放核心文件和启动文件,OBJ是用来存放编译过程文 件以及hex文件,STM32F10x_FWLib文件夹用来存放ST官方提供的库函数源码文件。 (3)src存放的是固件库的.c文件,inc存放的是对应的.h文件 (4)添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型为All files才能看 得到这个文件 (5)keil只会在一级目录查找,如果目录下面还有子目录,path一定要定位到最后一级子目 录 (6)

stm32嵌入式试题

第一章、为什么学习STM32 STM32是一系列以ARM Cortex-M为内核的32位嵌入式微控制器。 第二章、初识STM32库 1.什么是启动文件?启动文件的作用是什么?具体实现了哪些功能? 启动文件是任何处理器在上电复位之后最先运行的一段汇编程序。在我们编写的c语言代码运行之前,需要由汇编为c语言的运行建立一个合适的环境,接下来才能运行我们的程序main函数。所以我们也要把启动文件添加进我们的的工程中去。 ?初始化堆栈指针SP; ?初始化程序计数器指针PC; ?设置堆、栈的大小; ?设置异常向量表的入口地址; ?配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板可没有外部SRAM); ?设置C库的分支入口__main(最终用来调用main函数); ?在3.5版的启动文件还调用了在system_stm32f10x.c文件中的SystemIni() 函数配置系统时钟,在旧版本的工程中要用户进入main函数自己调用SystemIni() 函数。 2.stm32f10x_it.c文件的作用是什么? stm32f10x_it.c是专门用来编写中断服务函数的,在我们修改前,这个文件已经定义了一些系统异常的接口,其它普通中断服务函数由我们自己添加。 第四章、深入分析流水灯例程 1.GPIO是什么意思?STM32芯片的GPIO引脚分成哪些组?每组的引脚的号码是什么范围?STM32芯片上,I/O引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为GPIO (General-purpose I/O)。而GPIO引脚又被分为GPIOA、GPIOB……GPIOG不同的组,每组端口分为0~15,共16个不同的引脚 2.ST库提供了GPIO输出高电平和低电平的函数,分别是什么函数? 用GPIO_SetBit s()控制输出高电平,用GPIO_ResetBit s()控制输出低电平。 3.RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);这句代码实现的功能是什么?实现开启外设GPIOC的时钟。 4.下面三句代码,分别实现什么样的功能?(1)a&=~(1<<6);第7位清零,其他位保持不变(2)a|=(1<<6);第7位置1,其他位保持不变(3)a^=(1<<6);第7位取反,其他位保持不变 第5章调试程序 1.在调试STM32程序时,进行软件仿真和硬件调试,分别使用哪些软件或工具? 用MDK软件仿真,使用JLINK进行硬件调试

STM32实验报告分析

实验一:一个灯的闪烁 一、实验要求 1.熟悉使用STM32F103ZET6开发板 2.利用C语言程序实现一个灯闪烁 二、电路原理图 图1-1 LED灯硬件连接图 三、软件分析 1.本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init(); 2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA 3.声明GPIO结构: PF6~PF10口配置为输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; 4.应用GPIO口:点亮LED1有五种方法 ①ODR寄存器法:GPIOA->ODR=0xffbf; ②位设置/清除寄存器法:GPIOA->BRR|=0X001; ③方法③只适用于GPIOx_BSRR寄存器 ④GPIO_WriteBit()函数法:GPIO_Write(0xffbf); ⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8); 5.主函数程序: int main(void) { RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;;) { GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */ Delay(600000); GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */ Delay(600000); } } 四、实验现象 下载程序后开发板上的LED1灯闪烁

STM32实验报告

STM32实验报告

实验一搭建实验环境 一.实验简介 搭建嵌入式系统开发环境,建立第一个工程,流水灯实验 二.实验目的 掌握STM32开发环境,掌握从无到有的构建工程。 三.实验内容 熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现流水灯工程。通过ISP下载代码到实验板,查看运行结果。下载代码到目标板,查看运行结果。 四.实验设备 硬件部分:PC计算机(宿主机)、STM32实验板。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1.熟悉MDK KEIL开发环境 2.熟悉串口编程软件ISP 3.查看固件库结构和文件 4.建立工程目录,复制库文件 5.建立和配置工程 6.编写代码 7.编译代码 8.使用ISP下载到实验板 9.测试运行结果 10.记录实验过程,撰写实验报告

六.实验结果及测试七.实验总结

实验二按键实验(查询方式) 一.实验简介 在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。 二.实验目的 熟练使用库函数操作GPIO,掌握利用查询方式控制按键的程序编写方法。 三.实验内容 实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。 四.实验设备 硬件部分:PC计算机(宿主机)、STM32实验板。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1在实验一代码的基础上,编写按键控制部分代码 2编写完成主程序 4编译代码,下载到实验板 5.单步调试 6记录实验过程,撰写实验报告 六.实验结果及测试 七.实验总结

STM32实验报告

嵌入式系统课程设计实验报告题目基于STM32的LCD数字钟显示 姓名刘意 学号 2012221105200045 ___ 专业年级 12电科 指导教师卢仕 2015年 6 月 30日

1.实验名称: 基于STM32的LCD数字钟显示 2.实验目的与要求: (1)掌握嵌入式程序设计流程。熟悉并掌握软件的开发,如GPIO的端口配置,FSMC的编程,RA8875初始化等等。 (2)学习LCD与STM32的LCD的控制器的接口原理,掌握内置LCD 控制器驱动编写方法。 (3)编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来。 3.实验设备及原理: 硬件:PC机一台 STM32开发板一套 软件:keil4 原理:LCD显示器是通过给不同的液晶单元供电,控制其光线的 通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对 每个液晶单元通断电的控制,每个液晶单元都对应着一个电极, 对其通电,便可使用光线通过。本次实验使用RA8875驱动LCD, 采用FSMC模式向RA8875发送指令,读取状态和数据。通过程 序代码实现对TFTLCD的控制器RA8875驱动要求,从而达到TFT LCD 数字钟的显示。 4.实验步骤及内容: 1.新建工程文件夹szz,并建立4个子文件夹,并复制粘贴库文件和驱动文件。

2.打开keil4,新建工程。工程名为szz.芯片选取STM3210F103VC。 3.完成基础设置

4. 添加LCD.H和LCD.C两个文件,并加入工程中,编写LCD.H文件. LCD.H: #ifndef __GLCD_H #define __GLCD_H #include "stm32f10x.h" /* LCD color */颜色定义

stm32-PVD编程要点

下面对上面2张图和表格中的数据做一个简要的解释: 1)PVD = Programmable Votage Detector 可编程电压监测器 它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD 阀值有一个固定的差值,这就是表中的V PVDhyst(PVD迟滞)这个参数,通过列出的PVD阀值数据可以看到这个差别。引入这个差值的目的是为了防止电压在阀值上下小幅抖动,而频繁地产生中断。 2)POR = Power On Reset 上电复位;PDR = Power Down Reset 掉电复位。 POR的功能是在VDD电压由低向高上升越过规定的阀值之前,保持芯片复位,当越过这个阀值后的一小段时间后(图中的"滞后时间"或表中的"复位迟滞"),结束复位并取复位向量,开始执行指令。这个阀值就是表中倒数第4行(min=1.8,typ=1.88,max=1.96)。 POR的功能是在VDD电压由高向低下降越过规定的阀值后,将在芯片内部产生复位,这个阀值就是表中倒数第3行(min=1.84,typ=1.92,max=2.0)。 3)可以看到POR比PDR大了0.04V,这就是表中倒数第2行,V PDRhyst(PDR迟滞)=40mV。 4)从上面的第2张图可以看到,当VDD上升越过POR阀值时,内部并不马上结束复位,而是等待一小段时间(Reset temporization),这就是表中的最后一行T RSTTEMPO,它的典型数值是2.5ms。 这个滞后时间是为了等待供电电压能够升高到最低可靠工作电压以上,我们看到POR阀值最小只有1.8V,最大也只有1.96V,都低于数据手册中给出的最低可靠工作电压2.0V,所以这个滞后时间是十分必要的,如果供电电压上升缓慢,尤其是从1.8V升到2.0V以上超过1~2.5ms,则很可能造成上电复位后MCU不能正常工作的情况。 https://www.doczj.com/doc/d717715525.html,/view/f7352fd076a20029bd642db3.html STM32内部自带PVD功能,用于对MCU供电电压VDD进行监控。通过电源控制寄存器中的PLS[2:0]位可以用来设定监控电压的阀值,通过对外部电压进行比较来监控电源。当条件触发,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。 操作流程: 1)、系统启动后启动PVD,并开启相应的中断。 PWR_PVDLevelConfig(PWR_PVDLevel_2V8); // 设定监控阀值 PWR_PVDCmd(ENABLE); // 使能PVD EXTI_StructInit(&EXTI_InitStructure); EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD连接到中断线16上 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //使用中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Raising;//电压低于阀值时产生中断 EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中断线

相关主题
文本预览
相关文档 最新文档