文档库 最新最全的文档下载
当前位置:文档库 › stm32试题及答案

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

16.端口输出数据寄存器的地址偏移为(C )

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

17.每个I/O端口位可以自由的编程,尽管I/O端口寄存器必须以( D )的方式访问(A)16位字(B)16位字节(C)32位字节(D)32位字18.固件库中的功能状态(FunctionalState)类型被赋予以下两个值( A )

(A)ENABLE或者DISABLE (B)SET或者RESTE

(C)YES或者NO (D)SUCCESS或者ERROR

19.固件库中的标志状态(FlagStatus)类型被赋予以下两个值( C )

(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采用( A )位来编辑中断的优先级

(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 )组

(A)4 (B)5 (C)6 (D)7

26.中断屏蔽器能屏蔽( B )

(A)所有中断和异常(B)除了NMI外所有异常和中断

(C)除了NMI、异常所有其他中断(D)部分中断

27.PWM是( A )

28.(A)脉冲宽度调制(B)脉冲频率调制(C)脉冲幅度调制(D)脉冲位置调制

29.要想使能自动重装载的预装载寄存器需通过设置TIMx_CR1寄存器的( B )位(A)UIF (B)ARPE (C)UG (D)URS 30.以下对于STM32 ADC描述正确的是(B )

(A)STM32 ADC是一个12位连续近似模拟到数字的转换器

(B)STM32 ADC是一个8位连续近似模拟到数字的转换器

(C)STM32 ADC是一个12位连续近似数字到模拟的转换器

(D)STM32 ADC是一个8位连续近似数字到模拟的转换器

31.ADC转换过程不含哪项( D )

(A)采样(B)量化(C)编码(D)逆采样32.ADC转换过程正确的是( A )

(A)采样—量化—编码(B)量化—采样—编码

(C)采样—编码—量化(D)编码—采样—量化

33.下列哪项不是ADC转换器的主要技术指标( B )

(A)分辨率(B)频率(C)转换速率(D)量化误差34.以下对STM32F107集成A/D的特性描述不正确的是(B )

(A)12位精度(B)单一转换模式

(C)按通道配置采样时间(D)数据对齐方式与内建数据一致

35.以下对STM32F107集成A/D的特性描述正确的是( B )

(A)供电需求: 2.6V到3.8V

(B)输入范围:VREF-≤VIN≤VREF+

(C)性能线设备的转换时间:28MHz时为1us

(D)访问线设备的转换时间:56MHz时为1us

36.以下为STM32的GPIO端口配置寄存器的描述,在GPIO控制LED电路设计时,要使最大输出速度为10MHz,应该设置( B )

(A)CNFy[1:0] (B)MODEy[1:0]

(C)MODE (D)CNF

37.以下为GPIO端口配置寄存器的描述,在GPIO控制LED电路设计时,要使最大输出速度为2MHz,应该设置MODE[1:0]值为( C )

(A)00 (B)01

(C)10 (D)11

38.. 已知TIM1定时器的起始地址为0x4001 2C00,则定时器1的捕获/比较寄存器1的地址为( D )

(A)0x4001 2C20 (B)0x4001 2C2C

(C)0x4001 2C38 (D)0x4001 2C34

39.已知TIM1定时器的起始地址为0x4001 2C00,则定时器1的捕获/比较寄存器2的地址为( C )

(A)0x4001 2C20 (B)0x40012C2C

(C)0x4001 2C38 (D)0x4001 2C34

40.SysTick定时器校正值为( B )

(A)9000 (B)10000

(C)12000 (D)15000

41.SysTick定时器的中断号是( C )

(A)4 (B)5

(C)6 (D)7

42.上图中Tamper连接了STM32F10X的PC13GPIO,PC13通用IO端口映射到外部中断事件线上是( D )

(A)EXTI线14 (B)EXTI线15

(C)EXTI线12 (D)EXTI线13

43.上图中WKUP连接了STM32F10X的PA0 GPIO,PA0通用IO端口映射到外部中断事件线上是( A )

(A)EXTI线0 (B)EXTI线1

(C)EXTI线2 (D)EXTI线3

44./** @addtogroup Peripheral_registers_structures

* @{

*/

/**

* @brief Analog to Digital Converter

*/

typedef struct

{

__IO uint32_t SR;

__IO uint32_t CR1;

__IO uint32_t CR2;

__IO uint32_t SMPR1;

__IO uint32_t SMPR2;

__IO uint32_t JOFR1;

__IO uint32_t JOFR2;

__IO uint32_t JOFR3;

__IO uint32_t JOFR4;

__IO uint32_t HTR;

__IO uint32_t LTR;

__IO uint32_t SQR1;

__IO uint32_t SQR2;

__IO uint32_t SQR3;

__IO uint32_t JSQR;

__IO uint32_t JDR1;

__IO uint32_t JDR2;

__IO uint32_t JDR3;

__IO uint32_t JDR4;

__IO uint32_t DR;

} ADC_TypeDef;

ADC注入通道数据偏移寄存器有4个,其偏移地址为14H-20H,JOFR1的偏移地址为( D )

(A)0x20 (B)0x1c

(C)0x18 (D)0x14

45./** @addtogroup Peripheral_registers_structures

* @{

*/

/**

* @brief Analog to Digital Converter

*/

typedef struct

{

__IO uint32_t SR;

__IO uint32_t CR1;

__IO uint32_t CR2;

__IO uint32_t SMPR1;

__IO uint32_t SMPR2;

__IO uint32_t JOFR1;

__IO uint32_t JOFR2;

__IO uint32_t JOFR3;

__IO uint32_t JOFR4;

__IO uint32_t HTR;

__IO uint32_t LTR;

__IO uint32_t SQR1;

__IO uint32_t SQR2;

__IO uint32_t SQR3;

__IO uint32_t JSQR;

__IO uint32_t JDR1;

__IO uint32_t JDR2;

__IO uint32_t JDR3;

__IO uint32_t JDR4;

__IO uint32_t DR;

} ADC_TypeDef;

ADC注入通道数据偏移寄存器有4个,其偏移地址为14H-20H,JOFR2的偏移地址为( B )(A)0x14 (B)0x18

(C)0x1c (D)0x20

46.Cortex-M3的提供的流水线是( B )

(A)2级(B)3级

(C)5级(D)8级

47.Contex –M3处理器的寄存器r14代表( B )

(A)通用寄存器

(B)链接寄存器

(C)程序计数器

(D)程序状态寄存器

48.固件库中的功能状态(FunctionalState)类型被赋予以下两个值( A )

(A)ENABLE或者DISABLE

(B)SET或者RESTE

(C)YES或者NO

(D)SUCCESS或者ERROR

49.固件库中的标志状态(FlagStatus)类型被赋予以下两个值( C )

(A)ENABLE或者DISABLE

(B)SUCCESS或者ERROR

(C)SET或者RESTE

(D)YES或者NO

50.DMA控制器可编程的数据传输数目最大为( A )。

A.65536 B.65535

C.1024 D.4096

51.STM32中,1 个DMA请求占用至少(B )个周期的CPU 访问系统总线时间。

A.1 B.2

C.3 D.4

52.STM32的USART根据( A )寄存器M位的状态,来选择发送8位或者9位的数据字。A.USART_CR1 B.USART_CR2

C.USART_BRR D.USART_CR3

53.下面不属于STM32的bxCAN的主要工作模式为(C )。

A.初始化模式B.正常模式

C.环回模式D.睡眠模式

54.和PC系统机相比嵌入式系统不具备以下哪个特点( C )。

A、系统内核小

B、专用性强

C、可执行多任务

D、系统精简

55.嵌入式系统有硬件和软件部分构成,以下( C )不属于嵌入式系统软件。

A. 系统软件

B. 驱动

C. FPGA编程软件

D. 嵌入式中间件

56.在APB2上的I/O脚的翻转速度为( A )。

A.18MHz B.50MHz

C.36MHz D.72MHz

57.当输出模式位MODE[1:0]=“10”时,最大输出速度为( B )。

A.10MHz B.2MHz

C.50MHz D.72MHz

58.在ADC的扫描模式中,如果设置了DMA位,在每次EOC后,DMA控制器把规则组通道的转换数据传输到( A )中。

A.SRAM B.Flash

C.ADC_JDRx寄存器D.ADC_CR1

59.STM32规则组由多达( A )个转换组成。

A.16 B.18

C.4 D.20

60.在STM32中,( A )寄存器的ALIGN位选择转换后数据储存的对齐方式。

A.ADC_CR2 B.ADC_JDRx

C.ADC_CR1 D.ADC_JSQR

61.ARM Cortex-M3不可以通过(D )唤醒CPU。

A.I/O端口B.RTC 闹钟

C.USB唤醒事件D.PLL

62.STM32嵌套向量中断控制器(NVIC) 具有( A )个可编程的优先等级。

A.16 B.43

C.72 D.36

64.STM32的外部中断/事件控制器(EXTI)支持(C )个中断/事件请求。

A.16 B.43

C.19 D.36

65.STM32的USART根据(A )寄存器M位的状态,来选择发送8位或者9位的数据字。

A.USART_CR1 B.USART_CR2

C.USART_BRR D.USART_CR3

66.DMA控制器可编程的数据传输数目最大为(A )。

A.65536 B.65535

C.1024 D.4096

67.每个DMA通道具有(A )个事件标志。

A.3 B.4

C.5 D.6

68.STM32中,1 个DMA请求占用至少( B )个周期的CPU 访问系统总线时间。

A.1 B.2

C.3 D.4

二、判断题

1.Cortex-M3系列处理器支持Thumb指令集。(错)

2.Cortex-M3系列处理器支持Thumb-2指令集。(对)

3.Contex-M3系列处理器内核采用了哈佛结构的三级流水线。(对)

4.Cortex-M系列不支持Thumb-2指令集。(错)

5.Contex-M3系列处理器内核采用了冯诺依曼结构的三级流水线。(错)

6.STM32系列MCU在使用电池供电时,提供3.3~5V的低电压工作能力。(错)

7.STM32处理器的LQPF100封装芯片的最小系统只需7个滤波电容作为外围器件。(dui )

8.Cortex-M3在待机状态时保持极低的电能消耗,典型的耗电值仅为2μA。(错)

9.当处理器在Thread模式下,代码一定是非特权的。(错)

10.Context-M3处理器可以使用4个堆栈。(错)

11.在系统复位后,所有的代码都使用Main栈。(对)

12.高寄存器可以被所有的32位指令访问,也可以被16位指令访问。(错)

13.在系统层,处理器状态寄存器分别为:APSR,IPSR, PPSR。(错)

14.APSR程序状态寄存器的28位,当V=0,表示结果为无益处。(对)

15.Cortex-M3只可以使用小端格式访问代码。(错)

16.所谓不可屏蔽的中断就是优先级不可调整的中断。(错)

17.向量中断控制器只负责优先级的分配与管理,中断的使能和禁止和它无关。(错)

18.Cortex-M3体系架构中,有了位带位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。(对)

19.Cortex-M3体系架构中,有两个区中实现了位带:一个是SRAM 区的最低1MB 范围,第二个则是片内外设区的最低1MB 范围。(对)

20.stm3210xx的固件库中,RCC_DeInit函数是将RCC寄存器重新设置为默认值。(对)

21.stm3210xx的固件库中,RCC_PCLK2Config函数是用于设置低速APB时钟。(错)

22.STM32的串口既可以工作在全双工模式下,也可工作在半双工模式下。(对)

23.STM32的串口既可以工作在异步模式下,也可工作在同步模式下。(对)

24.每个I/O端口位可以自由的编程,尽管I/O端口寄存器必须以32位字的方式访问。(对)

25.所有的GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为输入时可以是激活的或者非激活的。(对)

26.所有的GPIO引脚有一个内部微弱的上拉和下拉,当它们被配置为输出时可以是激活的或者非激活的。(错)

27.端口输入数据寄存器的复位值为00000000H。(对)

28.端口输入数据寄存器位[15:0]是只读的,并且仅能按字访问,它们包含相关I/O端口的输入值。(对)

29.端口输入数据寄存器位[7:0]是只读的,并且仅能按字访问,它们包含相关I/O端口的输入值。(错)

30.固件包里的Library文件夹包括一个标准的模板工程,该工程编译所有的库文件和所有用于创建一个新工程所必须的用户可修改文件。(错)

31.从是否可编程的角度,中断可分为固定优先级中断和可调整优先(对)

32.从某种意义上说,异常就是中断。(对)

33.所谓不可屏蔽的中断就是优先级不可调整的中断。(错)

34.向量中断控制器只负责优先级的分配与管理,中断的使能和禁止和它无关。(错)

35.中断的优先级和它在中断向量表里的位置没有关系。(错)

36.当抢占式优先级不一样时,一定会发生抢占。(错)

37.向量中断控制器允许有相同的优先级。(对)

38.如果两个中断的抢占式优先级相同,则按先来后到的顺序处理。(对)

39ADC主要完成模/数转换功能。(对)

40.STM32 ADC是一个12位的连续近似模拟到数字的转换器。(对)

41.ADC转换器在每次结束一次转换后触发一次DMA传输。(对)

42.由AD的有限分辨率而引起的误差称为量化误差。(对)

43.转换速率是指完成一次从模拟到数字的AD转换所需的时间。(对)

44.STM32 ADC只可以在单一模式下工作。(错)

45.如果规则转换已经在运行,为了注入转换后确保同步,所有的ADC的规则转换被停止,并在注入转换结束时同步恢复。(对)

三、填空题

1.ST公司的STM32系列芯片采用了Cortex-M3 内核,其分为两个系列。STM32F101 系列为标准型,运行频率为36MHZ ;STM32F103 系列为标准型,运行频率为72MHZ 。

2.当STM32的I/O端口配置为输入时,输出缓冲器被禁止,施密特触发输入被激活。根据输入配置(上拉,下拉或浮动)的不同,该引脚的弱上拉和下拉电阻被连接。出现

在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。

3.STM32的所有端口都有外部中断能力。当使用外部中断线时,相应的引脚必须配置成输入模式。

4.STM32具有单独的位设置或位清除能力。这是通过GPIOX_BSRR 和GPIOX_BRR 寄存器来实现的。

5.ST公司还提供了完善的通用IO接口库函数,其位于stm32f10x_bgpio.c ,对应的头文件为stm32f10x_gpio.h 。

6.为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。这时,复用功能不再映射到它们原始分配的引脚上。在程序上,是通过设置复用重映射和调试I/O口配置寄存器(AFIO_MAPR)来实现引脚的重新映射。

7.STM32芯片内部集成的12 位ADC是一种逐次逼近型模拟数字转换器,具有18

个通道,可测量16 个外部和 2 个内部信号源。

8.在STM32中,只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR 寄存器传输到用户指定的目的地址。

9.在有两个ADC的STM32器件中,可以使用双ADC 模式。在双ADC 模式里,根据ADC_CR1 寄存器中DUALMOD[2:0] 位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同时触发。

10.ADC的校准模式通过设置ADC_CR2 寄存器的CAL 位来启动。

11.在STM32中,ADC_CR2 寄存器的ALIGN 位选择转换后数据储存的对齐方式。12.在STM32内部还提供了温度传感器,可以用来测量器件周围的温度。温度传感器在内部和ADC_IN16 输入通道相连接,此通道把传感器输出的电压转换成数字值。内部参考电压VREFINT 和ADC_IN17 相连接。

13.STM32的嵌入向量中断控制器(NVIC)管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现低延迟的中断处理,并有效地处理晚到中断。

14.STM32的外部中断/事件控制器(EXTI)由19 个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。

15.STM32的EXTI线16连接到PVD输出。

16.STM32的EXTI线17连接到RTC闹钟事件。

17.STM32的EXTI线18连接到USB唤醒事件。

18.STM32的USART 为通用同步异步收发器,其可以与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。

19.STM32的USART可以利用分数波特率发生器提供宽范围的波特率选择。20.智能卡是一个单线半双工通信协议,STM32的智能卡功能可以通过设置USART_CR3寄存器的SCEN 位来选择。

22.系统计时器(SysTick)提供了1个24位,降序,的计数器,具有灵活的控制机制23.STM32的通用定时器TIM,是一个通过可编程预分频器驱动的16 位自动装载计数器构成。

24.STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和中央对其模式。

25.ST公司还提供了完善的TIM接口库函数,其位于stm32f10x_tim.c ,对应的头文

件为stm32f10x_tim.h。

26.TIM1的益处/下益时更新事件(UEV)只能在重复向下计数达到0的时候产生。这对于能产生PWM信号非常有用。

27.TIM1具备16位可编程预分频器,时钟频率的分频系数为1~65535 之间的任意数值。

28.STM32系列ARM Cortex-M3芯片支持三种复位形式,分别为系统复位、电源复位和备份区域复位。

29.STM32还提供了用户可通过多个预分频器,可用来进一步配置AHB 、高速APB(APB2 ) 和低速APB(APB1 ) 域的频率。

30.用户可用通过32.768K Hz外部振荡器,为系统提供更为精确的主时钟。在时钟控制寄存器RCC_CR 中的HSERDY 位用来指示高速外部振荡器是否稳定。31.ST公司还提供了完善的RCC接口库函数,其位于stm32f10x_rcc.c ,对应的头文件为stm32f10x_rcc.h 。

32.当STM32复位后,HSL振荡器将被选为系统时钟。当时钟源被直接或通过PLL 间接作为系统时钟时,它将不能被停止。只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL 稳定),才可以从一个时钟源切换到另一个时钟源。在被选择时钟源没有就绪时,系统时钟的切换不会发生。

33.在STM32中,备份寄存器是16 位的寄存器,共10 个,可以用来存储20 个字节的用户应用程序数据。

34.备份寄存器位于备份区里,当主电源VDD 被切断,他们仍然由VBAT 维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。35.STM32的备份寄存器还可以用来实现RTC 校准功能。为方便测量,32.768kHz的RTC 时钟可以输出到入侵检测引脚上。通过设置RTC 校验寄存器(BKP_RTCCR)的CCO 位来开启这一功能。

36.当STM32的ANTI_TAMP 引脚上的信号发生跳变时,会产生一个侵入检测事件,这将使所有数据备份寄存器复位。

37.ST公司还提供了完善的备份寄存器接口库函数,其位于stm32f10x_bkp.c ,对应的头文件为stm32f10x_bkp.h 。

38.STM32的DMA 控制器有7 个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA 请求的优先权。

39.在DMA处理时,一个事件发生后,外设发送一个请求信号到DMA控制器。DMA 控制器根据通道的优先权处理请求。

40.DMA控制器的每个通道都可以在有固定地址的外设寄存器和存储器地址之间执行DMA传输。DMA传输的数据量是可编程的,可以通过DMA_CCRX 寄存器中的PSIZE 和MSIZE 位编程。

41.ST公司还提供了完善的DMA接口库函数,其位于stm32f10x_dma.c ,对应的头文件为stm32f10x_dma.h 。

45.在STM32中,从外设(TIMx、ADC、SPIx、I2Cx 和USARTx)产生的7个请求,通过逻辑与输入到DMA控制器,这样同时只能有一个个请求有效。

四、简答题

1、什么是嵌入式系统?嵌入式系统一般由哪几部分构成?P1

2、ARM v7的体系结构可以分为哪几个子版本(款式),分别应用在什么领域?P12

3、Cortex-M3的处理器有那两种工作模式和状态?如何进行工作模式和状态的切换?P18

4、Cortex-M3的存储空间可以分为哪几个部分,每一部分的地址范围是怎样的?P26

5、什么是位绑定区、位绑定别名区?它们有怎样的关系?P30~31

6、基于CMSIS标准的软件架构分为那几层?其中的CMSIS层一般由哪几部分组成?P66

7、简述STM32固件库命名规则。

8、STM32共有那几种基本时钟信号?

9、简述设置系统时钟的基本流程。P86

10、STM32的GPIO的配置模式有那几种?如何进行配置模式的配置?P93

11、简述STM32的不同复用功能的重映射功能。

12、简述嵌套向量中断控制器(NVIC)的主要特性。P38

13、简述STM32的优先级划分与抢占的过程。P110

14、简述STM32的USART的功能特点。

15、如何设置STM32的串口的波特率。P136

16、STM32高级定时器有哪些功能?

17、已知STM32的系统时钟为72MHz,如何设置相关寄存器,实现20ms定时?

18、简述DMA控制器的基本功能。

19、、请描述DMA通道的工作模式、工作原理。

20、简述STM32的ADC系统的功能特性。

21、简述STM32的双ADC工作模式。

五、编程与应用题

1、在一个STM32点亮LED的程序中,部分代码如下:

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

while (1)

{

/*循环点亮LED*/

GPIO_WriteBit(GPIOA, GPIO_Pin_2, (BitAction)0x01); //①

Delay(0XFFFFF);

GPIO_WriteBit(GPIOA, GPIO_Pin_2, (BitAction)0x00); //②

Delay(0XFFFFF);

GPIO_WriteBit(GPIOA, GPIO_Pin_3, (BitAction)0x01); //③

Delay(0XFFFFF);

GPIO_WriteBit(GPIOA, GPIO_Pin_3, (BitAction)0x00); //④

Delay(0XFFFFF);

}

(1)简述GPIO_Configuration函数对IO接口配置的步骤;

解:设置引脚、设置速率、设置模式

(2)分析该程序,LED分别连接在哪些IO引脚上,当引脚输出高电平时,是点亮还是熄灭LED?

解:点亮

(3)分析循环点亮LED代码,补充相应的注释。

解:点亮连接的PA2上的LED灯、熄灭.....、点亮连接PA3上的LED、熄灭......

(4)库函数GPIO_SetBits和GPIO_ResetBits的原形如下,用这两个函数重写循环点亮LED 代码。第五章P107方法5

2、利用STM32的GPIO接口及其操作,实现4个LED按照LED1、LED2、LED

3、LED4的顺序循环显示。硬件连接图如图所示。

解:参照第一题

3、已知系统时钟为72MHz,采用定时器TIM1产生周期为100ms的定时时间间隔并通过LED发光二极管指示定时过程。P156 P161 2~4步

解:T=

4、下面的程序利用TIM3产生PWM信号。

频率:TIM3CLK = 36MHz,Prescaler = 0x0,得到TIM3 counter clock = 36MHz。TIM3 ARR Register = 999,进而设定TIM3频率= TIM3 counter clock/(ARR + 1)= 36kHz。

TIM3通道1的占空比=(TIM3_CCR1/ TIM3_ARR×100 = 50%,通道2、3、4的占空

比分别是37.5%、25%、12.5%。

解:不考

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.wendangku.net/doc/5b17148886.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; // 使能中断线

相关文档