《嵌入式系统及应用(含实验)》习题及解答_第1页
《嵌入式系统及应用(含实验)》习题及解答_第2页
《嵌入式系统及应用(含实验)》习题及解答_第3页
《嵌入式系统及应用(含实验)》习题及解答_第4页
《嵌入式系统及应用(含实验)》习题及解答_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统及应用习题第1章STM32体系结构一、选择题1.在下列微控制器系列中,基于Cortex-M4内核的有(D)。 A.STM32F0 B.STM32F1 C.STM32F2 D.STM32F4 2.STM32F407ZGTx和STM32F407IGTx微控制器的主要区别是(B)。 A.工作速度不同 B.GPIO引脚数量不同 C.采用的内核不同 D.内部Flash容量不同3.在STM32F407微控制器的总线矩阵中,与内核直接连接的总线是(D)。 A.AHB总线 B.APB1总线 C.APB2总线 D.S总线 4.在STM32F407中,APB1总线的最高工作速度为(C)MHz。 A.168 B.84 C.42 D.12 5.通过APB1总线连接的所有片上外设在存储器映射中起始地址的高16位为(C)。 A.0x0000 B.0x2000 C.0x4000 D.0xc0006.在STM32F407的4GB存储空间中,程序代码存储在(A)区。 A.Block0 B.Block1 C.Block2 D.Block77.已知某片上外设挂接在APB2总线上,外设基地址相对于总线基地址的偏移量为0x0100,则该外设中第i个32位寄存器映射到存储器中的地址为(D)。 A.0x40010100 B.0x40010100+i C.0x40000100+2i D.0x40010100+4i8.有关GPIO的工作模式,下列说法正确的是(C)。 A.在复用模式下,通过IDR和ODR可以实现数据的输入或输出 B.GPIO不同的工作模式只是工作速度不同 C.输出模式可以进一步配置为推挽和开漏模式 D.每个GPIO引脚都有16种复用功能9.下列寄存器配置能够使PD4-7引脚输出低电平,其他引脚输出电平保持不变的是(B)。 A.ODR=0xff0f B.ODR&=0xff0f C.BSRR=0xff0f D.BSRR|=0xff0f 10.STM32F407的UASRT1串口模块由PA9和PA10工作在复用模式以提供所需的TxD和RxD引脚,初始化时对PA端口AFR的配置应为(A)。 A.AFRH=0x00000770 B.AFRH=0x07700000 C.AFRL=0x00000770 D.AFRL=0x07700000 二、填空题1.STM32F4系列微控制器基于Cortex-M4内核,工作频率最高可达168MHz。2.STM32F407IGTx微控制器共有176个引脚,其中有140个GPIO引脚。3.STM32F407系列MCU中集成了最多可达1M字节的Flash、192K字节SRAM和4K字节备份SRAM。4.STM32F407中的片上外设通过2组APB总线和总线桥与AHB总线连接,而后者再通过总线矩阵与主控总线和内核相连接。5.在STM32F407中,程序和数据存储器、外设等位于同一个容量为4GB的地址空间,所有存储空间共分为8块,每块512MB。6.在STM32F407系列MCU的4GB存储空间中,AHB1、APB1和APB2外设总线基地址分别为0x40020000、0x40000000和0x40010000。7.在STM32F407中,AHB总线时钟的最大频率为168MHz,而APB2总线时钟的最高时钟频率为84MHz。8.在STM32F407中,产生系统时钟的基准时钟源可以是HSE、HSL和PLLCLK。9.GPIO的工作模式有输入、输出、模拟和复用模式。10.GPIO引脚工作在输入模式下,可进一步配置为上拉、下拉或浮空模式。三、问答题1.简述ARM内核与STM32微控制器之间的关系。答:STM32是基于ARM内核v7-M和v7E-M架构(Cortex-M)的微控制器,是在内核的基础上,由ST公司将各种片上外设集成在一个芯片上,并通过总线矩阵与内核相连接。2.简述总线矩阵的作用。答:在STM32F407系列MCU中,Cortex-M4内核与外设之间通过总线矩阵相互连接。主控总线S0~S7通过总线矩阵与被控总线M0~M6相连接,所有外设(Flash、SRAM、AHB外设等)挂接在相应的被控总线上,实现与Cortex-M4内核和DMA等主器件之间的通信和信息传输。3.STM32F407系统复位时,PA外设中MODER和PUPDR寄存器的值分别为0xA8000000和0x64000000,分析复位后PA15-0引脚的工作模式。答:PA15和13为上拉复用功能模式,PA14为下拉复用功能模式,其余引脚为无上拉下拉的输入模式。4.在STM32时钟系统中,简述APB1和APB2总线时钟的形成过程。答:由HSE、HSL或将其经锁相倍频后得到系统时钟SYSCLK,系统时钟SYSCLK再经AHB预分频后得到HCLK时钟,最高168MHz;HCLK时钟经APB1和APB2预分频器分频后分别得到APB1和APB2总线时钟。

第2章STM32编程基础一、选择题1.下列不属于STM32Cube生态系统的是(A)。A.KeilMDK B.STM32CubeMX C.STMCubeIDE D.FreeRTOS 2.语句uint16val=0xffff和var^=~(0xf0>>4)的执行结果为var=(C)。A.0x0000 B.0xf000 C.0x000f D.0x0fff 3.要将字符变量a中的D4位取反,其他位保持不变,可以选用的语句是(D)。A.a=0x10 B.a&=0x10 C.a|=0x10 D.a^=0x10 4.有如下结构体及变量定义:typedefstruct{ uint8x; uint16y; }a_struct; a_structx1;a_struct*x2;则要访问成员变量y,如下正确的语句是(A)。 A.x1.y=10 B.x1->y=10 C.y=10 D.x2.y=10 二、填空题1.STM32Cube生态系统主要包括软件工具和嵌入式软件模块。2.要将字符型变量a中的最高两位设置为10,其他位保持不变,可以依次用如下两条语句实现,即a&=~(0x01<<6)或a&=0xbf(0x3f)和a|=(0x01<<7)或a|=0x80。3.在STM32系列MCU中,uint16型变量的取值范围默认为-216~216-1。4.有如下两个结构体及变量定义:typedefstruct{typedefstruct{ uint8x; uint8y;}a_TypeDef;typedefstruct{a_TypeDef*s1; a_TypeDefs2;}b_TypeDef;b_TypeDefs;要将s中成员s1指向的结构体成员x与s中成员s2中的成员变量y的值相加,结果存入变量z,相应的语句为z=(s.s1->x)+(s.s2.y)。5.在实践案例2-1中定义的reg.h头文件的基础上,要通过PF6和PF7同时点亮开发板上的红色和绿色LED,可以选用的语句是GPIO_ODR&=~(0x03<<6)或BSRR|=0x03<<16<<6。三、问答题1.简述STM32常用的程序开发方式有哪些。答:常用的有基于寄存器、基于HAL库、基于FreeRTOS的程序开发方式。2.某STM32F407系统中,PB15引脚连接了一个LED的阴极,要采用基于寄存器的开发方式点亮该LED。(1)写出reg.h头文件中需要增加的宏定义语句;(2)写出PB15初始化配置程序,假设PB15的工作速度和上下拉模式无需配置;(3)写出实现具体功能的代码,要求通过BSRR寄存器实现。答:(1)在reg头文件中,寄存器地址映射语句保持不变,只需要将其中的GPIOF替换为GPIOB。另外增加如下语句定义GPIOB外设的基地址: #defineGPIOB_BASE (AHB1PERIPH_BASE+0x0400)(2)在主程序中,通过如下语句开启GPIOB外设时钟,并配置PB15为推挽输出: RCC_AHB1ENR|=(1<<1); /*开启GPIOB时钟*/ GPIOB_MODER&=~(0x03<<(2*15)); GPIOB_MODER|=(0x01<<2*15); /*输出模式*/ GPIOB_OTYPER&=~(1<<15); /*推挽模式*/ (3)具体功能代码: GPIOB_BSRR|=(1<<16<<15); /*PB15引脚输出低电,点亮LED*/ 3.在实践案例2-2中所定义的结构体和数据类型的基础上,创建如下库函数:GPIO_PinStateGPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);实现对指定GPIO引脚状态的读取和查询。答:函数定义如下:GPIO_PinStateGPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){GPIO_PinStatepinSta;if((GPIOx->IDR&GPIO_Pin)!=(uint32_t)GPIO_PIN_RESET){pinSta=GPIO_PIN_SET;}elsepinSta=GPIO_PIN_RESET;returnpinSta;}

第3章STM32的固件库和HAL库一、选择题1.在HAL库固件包中,与内核外设相关的宏、结构体及操作访问函数定义在(A)文件中。 A.core_cm4.h B.stm32f4xx.h C.stm32f407xx.h D.system_stm32f4xx.h 2.在基于HAL库的程序中,必须导入头文件(B)中,以便实现HAL库的初始化等。 A.stm32f4xx.h B.stm32f4xx_hal.h C.stm32f407xx.h D.stm32f4xx_hal_gpio.h3.STM32F407系列MCU中所有外设的结构体定义、外设寄存器声明以及外设寄存器访问宏定义都在(C)文件中。 A.stm32f4xx.h B.stm32f4xx_hal.h C.stm32f407xx.h D.stm32f4xx_hal_gpio.h4.下面的语句能够使PG10引脚输出低电平,而其他引脚输出电平保持不变的是(B)。 A.HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_SET) B.HAL_GPIO_WritePin(GPIOG,GPIO_PIN_10,GPIO_PIN_RESET) C.HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_10) D.HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_10)5.在CubeMX的时钟树配置中,对STM32F407系列MCU,通常配置系统时钟为(A)MHz。 A.168 B.84 C.42 D.256.在CubeMX中,当配置某个GPIO引脚为(B)模式时,可以进一步将其配置为上/下拉或浮空模式。 A.输出 B.输入 C.模拟 D.复用二、填空题1.STM32的固件包是基于CMSIS标准建立的,该标准由ARM公司与多家不同的芯片和软件供应商合作定义。2.在执行STM32F407xx应用程序时,必须首先调用SystemInit()函数实现系统初始化。在HAL库中,该函数的声明在头文件system_stm32f4xx.c中。3.在STM32应用程序开发中,决定是否使用HAL库的条件编译语句在文件中stm32f4xx.h中。4.在CubeMX的时钟树配置中,对STM32F407系列MCU,通常配置AHB和APB1总线时钟频率分别为168MHz和42MHz。5.在CubeMX中,当配置某个GPIO引脚为输出模式时,可以进一步将该引脚配置为推挽输出或开漏输出模式。6.在CubeMX自动生成的工程代码中,将自动创建函数MX_GPIO_Init(),并在该函数中自动调用HAL库中的HAL_GPIO_Init()函数对GPIO引脚进行初始化配置。三、问答题1.简述什么是CMSIS。答:为了解决不同MCU芯片厂商Cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准(CortexMicroControllerSoftwareInterfaceStandard,Cortex微控制器软件接口标准)。该标准实际上是位于用户层和MCU硬件之间的一个软件抽象层。CMSIS层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植是有极大的好处的。2.简述在STM32应用程序的开发过程中,CubeMX的主要作用。答:利用CubeMX可以快速和简单的对STM32系列MCU的引脚、时钟树、外设和各种中间件的工作模式等进行初始化配置,为电路板设计人员生成引脚配置报告,为软件开发人员生成完整的工程,其中包括所有必须的库和初始化C语言代码,以便配置器件工作在用户自定义的工作模式。3.定义函数Get_PinNum()实现如下功能:将入口参数GPIO_Pin(uint16_t类型)转换为GPIO的引脚序号(uint8_t类型)返回。例如,给定GPIO_Pin=0x0004,则返回GPIO引脚序号2。答:函数定义如下:uint8_tGet_PinNum(uint16_tGPIO_Pin){ uint8_tPinNum=0; uint16_tPinCode=0x01; for(PinNum=0;PinNum<16;PinNum++) { if(PinCode==GPIO_Pin)returnPinNum; PinCode<<=1; }}4.修改HAL库中的GPIO引脚输出函数HAL_GPIO_WritePin(),要求函数入口和出口参数不变,在函数体中利用ODR寄存器实现引脚的写操作。答:完整的定义代码如下:voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState){if(PinState==GPIO_PIN_RESET){GPIOx->ODR&=~GPIO_Pin;}else{GPIOx->ODR|=GPIO_Pin;}}

第4章中断和系统定时器一、选择题1.在STM32微处理器中,外部中断和事件由(C)和NVIC负责管理, A.内核 B.GPIO外设 C.EXTI控制器 D.滴答定时器 2.在NVIC中,要开启某个中断,是通过(A)寄存器进行设置的。 A.ISER B.ICER C.ISPR D.IABR 3.STM32F407的EXTI控制器可以管理(B)个硬件或软件中断/事件请求。 A.240 B.23 C.16 D.1 4.在CubeMX的NVIC中配置STM32F407的优先级分组为3,则系统中所有异常/中断的抢占优先级数值最大为(B)。 A.15 B.7 C.3 D.1 5.STM32F407最多支持由GPIO引脚引入的(C)个外部中断。 A.256 B.128 C.16 D.8 6.在STM32F407中,系统滴答定时器SysTick是一个(B)位的递减计数器, A.32 B.24 C.16 D.12 7.在STM32F407中,LSI时钟频率为32kHz,设置IWDG的PR=0x00,则计数时钟频率为(C)kHz。 A.32 B.16 C.4 D.1 二、填空题1.已知STM32F407中的优先级分组为1,某外部中断对应的IP寄存器中的值位0xc0,则该中断的抢占优先级和子优先级数值分别为1和4。2.某STM32F407系统中有10个中断源并且具有相同的抢占优先级,则必须配置优先级分组为4。3.STM32F407中,由GPIO引脚最多可以引入16个外部中断。4.在STM32F407启动文件的中断向量表中,由PF7引入的外部中断的中断向量(中断处理函数名)为EXTI9_5_IRQHandler。5.对由GPIO引脚引入的外部中断,响应后要实现的主要操作代码一般都放在中断回调函数中,该函数的原型声明为voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin);。6.在默认的初始化配置中,系统滴答定时器的计数脉冲频率等于HCLK,而自动重载计数初值为该频率的1/1000。7.假设PCLK1=42MHz,WDGTB=0,则喂狗所需的最长时间间隔为6.24ms,结果精确到小数点后两位。三、问答题1.简述中断和事件的区别。答:中断(Interrupt)需要CPU参与后续的中断响应,包括上下文切换、执行中断服务程序、恢复现场并返回等,而事件(Event)仅触发脉冲发生器产生一个单脉冲输出,送入其他硬件电路,以实现对该事件的响应,比如DMA操作、AD转换等。2.简述STM32F407中的中断优先级管理规则。答:(1)当处理器执行某个中断的异常处理程序时,另一个具有相同优先级分组的中断不予响应;(2)如果多个挂起中断具有相同的优先级分组,则由子优先级决定其响应和处理顺序;(3)如果多个中断具有相同的优先级分组和子优先级,则首先处理IRQ号最低的中断。3.简述什么是EXTI控制器及其与NVIC的关系。答:嵌套向量中断控制器NVIC是CM4内核提供的实现异常/中断管理的部件。STM32微处理器芯片之外,由GPIO引脚引入的外部中断和事件由EXTI控制器外设和内核的NVIC共同负责管理。4.简述CubeMX中与外部中断有关的配置有哪些。答:(1)在引脚封装视图中将相应的GPIO引脚配置为GPIO_EXTIx复用模式;(2)在NVIC中开启相应的中断,并允许生成中断处理函数和调用HAL库处理函数;(3)根据需要配置中断的优先级分组、抢占优先级和子优先级。5.简述STM32中SysTick定时器的主要用途。答:STM32F407的SysTick定时器主要用于产生时基信号,作为操作系统所有操作的节拍和时间刻度。6.简述看门狗的主要作用。看门狗是一个定时器,具有输入和输出端口,主要功能是监控微处理器的工作状态,并在错误发生时发出重启信号。喂狗命令在程序中断中具有最高优先级。软件在执行完特定任务后应喂狗,若未按时喂狗,看门狗会认为系统故障并触发复位。系统上电后,根据工作模式选择是否启用看门狗,若启用,定时器开始计时,未及时喂狗将导致看门狗超时,系统复位。

第5章通信接口及其应用一、选择题1.为利用通用串口UART4进行串行数据传送,需要占用(C)根GPIO引脚。 A.8 B.4 C.2 D.1 2.为了利用通用串口实现数据发送,只需要用程序将数据写入(A)。 A.DR B.TDR C.RDR D.BRR3.下列不属于通用串口初始化配置参数的是(D)。 A.波特率 B.数据位数 C.停止位 D.收发数据4.在STM32F407中,能够设置的波特率分频系数最大为(B)。 A.4096 B.4095.9375 C.4095.875 D.4095.55.要利用通用串口实现中断式接收数据,需要调用执行的HAL库函数是(D)。 A.HAL_UART_Transmit() B.HAL_UART_Receive() C.HAL_UART_Transmit_IT() D.HAL_UART_Receive_IT()6.I2C总线是利用两根线实现集成电路芯片之间的(A)数据传输。 A.同步串行 B.异步串行 C.DMA D.并行7.下列有关I2C总线的说法,正确的是(C)。 A.I2C总线与通用串口一样,可以实现两个芯片之间的同步和异步通信。 B.I2C总线采用两线制数据传输,这两根线分别是RXD和TXD。 C.与通用串口的异步通信相比,I2C在传输数据的同时,需要同时传输同步时钟。 D.利用I2C总线可以同时实现在MCU与多个集成电路芯片之间的串行数据传送。8.在I2C总线中,器件地址是由(C)器件发出的。 A.发送器 B.接收器 C.主器件 D.从器件9.在利用I2C总线进行多字节数据传输时,当数据的收发方向需要发生切换时,主器件必须向从器件发送(B)。 A.起始信号S B.重复起始信号Sr C.应答信号A D.停止信号P10.AT24C02采用I2C接口,可以实现页写功能,每次最多只能写入(C)字节数据。 A.2 B.4 C.8 D.1611.在SPI总线协议中,主机将从机的(A)信号置为低电平,即开始一次数据传送。 A. B.SCK C.MISO D.MOSI二、填空题1.利用通用串口实现同步串行通信时所需的引脚信号有RXD、TXD和SCLK。2.为允许通用串口既可以接收数据,也可以发送数据,应在CubeMX中将参数DataDirection配置为Receiveandtransmit。3.利用STM32F04的UART4进行串行通信,已知过采样速率为16,BRR=0xe3d,则波特率分频系数为227.8125,波特率为11522kbit/s。4.在CubeMX生成的初始工程代码中,为通用串口USART2创建的结构体指针变量名为USART2,句柄结构体变量名为huart2。5.通过调用HAL库中的HAL_UART_Transmit_IT()函数,可以实现通用串口的中断式数据发送。6.I2C总线采用两线制传输,其中数据和同步时钟分别通过信号线SDA和SCL进行传送。7.在I2C总线中,当主器件接收完指定个数的数据后,必须给从器件发一个NACK信号8.当同步时钟为高电平时,在SDA线上出现的正跳变和负跳变,分别称为I2C总线的停止信号和起始信号。9.假设I2C接口中CCR寄存器的数据为0x8030,APB1总线时钟频率为42MHz,则SCL线上同步时钟脉冲的频率近似为292kHz。10.利用STM32F407中的I2C3接口读取某存储器芯片中从0x20单元开始存放的100个字节数据并存入数据缓冲区ReadBuf,已知存储器的器件地址为0xa0,超时等待时间为200ms,实现这一操作的相关语句为HAL_I2C_Mem_Read(&hi2c3,0xa0,0x21,1,ReadBuf,100,200)。11.在STM32的SPI接口中,当一帧数据发送完毕时,状态寄存器SR中的TXE标志位置位,当接收完一帧数据时,RXNE标志位置位。三、问答题1.简述CubeMX中对通用串口的主要初始化配置有哪些?答:(1)设置串口的工作模式为Asynchronous(异步)或Synchronous(同步),从而启用串口;(2)在配置面板中单击ParameterSettings标签,可以配置串口的工作参数,包括波特率、数据位数、停止位、奇偶校验位等。(3)如果需要采用中断方式工作,则在NVIC中配置是否开启串口中断,并为串口配置合适的抢占优先级和子优先级。2.简述通用串口结构体、串口句柄结构体和串口初始化结构体的作用。答:串口结构体用于封装通用串口外设中的寄存器;串口句柄结构体用于保存串口工作过程中所需要的参数,例如串口传送的数据、串口的工作状态等;串口初始化结构体用于保存在CubeMX中对串口配置的相关初始化配置参数。3.简述利用通用串口实现查询式串行数据传送的典型方法。答:通过调用宏函数__HAL_UART_GET_FLAG(__HANDLE__,__FLAG__)读取状态标志位UART_FLAG_TXE(发送数据寄存器空)和UART_FLAG_RXNE(接收数据寄存器非空),以检测串口当前的工作状态。当返回值为SET(状态标志位为1码)时,可以向串口写入新的发送数据,或者从串口读取接收到的数据。否则,重复调用上述宏函数进行查询检测。4.简述I2C总线主器件收发操作函数和存储器读写操作函数在用法上的主要区别。答:两种操作函数在调用时都需要指定所用的I2C接口实例、从器件地址、数据缓冲器地址和收发数据的个数。不同的是,在调用存储器读写操作函数时,还需要另外指定存储器单元地址和单元地址的字节数(1或2字节)。在执行存储器读写操作函数时,每读写一个数据,数据缓冲区地址和存储器单元地址会自动递增,而不需要在程序中用专门的指令实现修改地址指针的操作。5.简述在SPI接口协议中如何实现设备寻址。答:SPI协议中没有设备地址,而是使用信号线来寻址。当主机要选择从设备时,将该从设备的信号线设置为低电平,该从设备即被选中,接着主机才开始与被选中的从设备进行数据传送。

第6章定时器及其应用一、选择题1.对STM32F407中的两个基本定时器,其时钟源脉冲频率为(B)MHz。 A.168 B.84 C.42 D.252.下列部件中不属于时基单元的是(A)。 A.触发控制器 B.预分频器 C.计数器 D.自动重载寄存器3.下列变量属于基本定时器初始化结构体成员的是(D)。 A.ARR B.SR C.State D.Period4.当基本定时器DIER中的(B)位置位时,将允许定时器发出更新事件中断请求。 A.UDE B.UIE C.UIF D.UEV5.在查询方式下,程序中通过不断检测(C)位可以确定定时器定时是否到。 A.UDE B.UIE C.UIF D.UEV6.下列基本定时器不具有的功能是(C)。 A.定时计数 B.发出更新事件 C.输入捕获 D.自动重载计数值7.PWM脉冲信号的产生是利用定时器的(D)功能实现的。 A.定时计数 B.更新事件中断 C.输入捕获 D.比较输出8.在PWM脉冲信号的产生过程中,脉冲的占空比决定于(B)中存放的数值大小。 A.ARR B.CCR C.CNT D.PSC二、填空题1.在STM32F407中,通用定时器TIM9~11挂接在APB2总线上,其时钟源脉冲频率为168MHz。2.在所有的基本定时器和通用定时器中都有时基单元,时基单元由预分频器、自动重载寄存器和计数器构成。3.在CubeMX生成的工程中,对基本定时器TIM6的初始化是通过MX_TIM6_Init()函数实现的。4.当中断使能时,定时器计数溢出将发出更新事件中断请求。5.通用定时器除了有基本的定时和计数功能以外,还有输入捕获和比较输出功能,以便实现脉冲信号的产生和测量。6.利用TIM12实现PWM脉冲的测量,已知时基单元的预分频系数为167,捕获通道两次捕获CCR1和CCR2中的值分别为99和29,则输入脉冲的频率为5kHz,占空比(高电平持续时间/脉冲周期)为30%。7.在输入捕获和PWM信号测量时,读取捕获计数值的操作一般放在定时器的输入捕获中断回调函数中,该回调函数名为HAL_TIM_IC_CaptureCallback()。8.调用宏函数__HAL_TIM_GET_FLAG(&htim6,TIM_SR_UIF)可以查询定时器TIM6定时是否到,定时到时该函数返回1(SET)。三、问答题1.简述基本定时器采用中断方式实现定时的基本程序流程。答:当基本定时器递增计数到自动重载值时,将出现计数溢出。如果以中断方式启动定时,则将发出更新事件中断。在响应定时器更新事件中断后,将依次执行TIMx_IRQHandler()、HAL_TIM_IRQHandler()函数,最后执行定时器更新事件回调函数HAL_TIM_PeriodElapsedCallback()。在应用程序中,只需要重新该回调函数,实现具体的功能。2.简述什么是定时器的输入捕获和比较输出功能。答:输入捕获是对外部输入脉冲信号进行边沿检测,利用脉冲的边沿锁存时基单元计数器的计数值,从而实现脉冲种牛场、宽度和占空比等的测量。比较输出功能是利用比较器将时基单元的计数值与预先设置的CCR值进行比较,从而控制输出脉冲高低电平的翻转,输出不同占空比的脉冲,实现PWM脉冲信号的产生。3.简述PWM脉冲产生的基本原理。答:在计数脉冲的频率固定时,输出PWM脉冲的频率或周期由定时器中的自动重载寄存器ARR中设置的计数值决定,其占空比由捕获/比较寄存器CCR中的值决定。通过设置不同的重载计数值和捕获/比较寄存器值,即可产生不同宽度和频率的PWM脉冲。4.简述PWM脉冲测量的基本原理。答:利用输入捕获功能检测输入的PWM脉冲,当上升沿到来时定时器的两个捕获通道IC1和IC2同时捕获,计数器CNT清零。到下降沿到来时,IC2捕获,此时计数器CNT的值被锁存到捕获寄存器CCR2中。当下一个上升沿到来时,IC1捕获,计数器CNT的值被锁存到捕获寄存器CCR1中。其中CCR2+1即表示脉宽,而CCR1+1表示脉冲的周期。

第7章模拟外设一、选择题1.在STM32F407的DAC中,待转换的数据是通过程序直接送入( D)寄存器。 A.CR B.SR C.DOR D.DHR 2.下列不能作为DAC触发源的是(A)。 A.TIM1的更新事件 B.TIM2的更新事件 C.EXTI9 D.SWTRIG(软件触发) 3.在STM32F407中,通过GPIO引脚工作在模拟模式,可以为每个ADC最多引入(D)个模拟电压。 A.32 B.20 C.19 D.16 4.已知PCLK2=84MHz,预分频系数为8分频,采样时间为28个周期,则ADC的转换时间近似为(D)ms。 A.0.095 B.1.143 C.2.667 D.3.810 5.在DMA2控制器中,ADC3通过(C)送入DMA请求。 A.通道0 B.通道1 C.通道2 D.通道36.当ADC规则组中多个通道采用扫描转换模式时,必须采用(D)方式将每个通道的转换结果数据及时转存到存储器中。 A.无条件传送 B.查询方式 C.中断方式 D.DMA方式二、填空题1.如果配置DAC2不使用触发方式,则当向DHR写入待转换数据的一个APB1总线时钟周期后,将在PA5引脚得到相应的输出模拟电压。2.对DAC进行初始化时,将调用HAL_DAC_ConfigChannel()函数对所用的通道进行配置,主要包括设置通道的触发方式和指定输出缓冲器。3.在STM32F407的ADC中,规则组最多可以有16个模拟量输入通道。4.在STM32F407中,ADC的定时器触发可以是定时器的输出触发事件或输入捕获信号。5.调用HAL_ADCEx_InjectedStart_IT()函数,可以以中断方式启动注入组通道的转换。6.当配置DMA控制器的参数DataWidth为HalfWord时,在程序中接收ADC转换转换结果的数组必须定义为uint16_t类型。三、问答题1.简要说明如下语句的功能: HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_12B_R,0x01230345);答:该语句用于向DAC输出待转换数据。其中的参数指定采用DAC通道2,转换数据采用12位右对齐格式,数据大小为0x123=291。最后一个参数的低16位无用。2.简述软件触发和定时器触发时,实现DAC转换控制的主要流程。答:(1)软件触发时,只需要调用HAL_DAC_SetValue()函数向DAC输出待转换的数据,之后调用HAL_DAC_Start()启动DAC转换。(2)定时器触发时,一般用中断方式启动定时。在定时器的中断服务程序中,调用HAL_DAC_SetValue()函数向DAC输出待转换的数据即可。3.简述什么是ADC的规则通道和注入通道。答:规则通道(RegularChannel)又称为规则组通道,其中多个通道输入的模拟电压按照事先指定的顺序进行转换。注入通道(InjectionChannel)可以理解为插入或插队的意思,是一种在规则通道转换的过程中强行插入转换的通道。如果在规则通道转换过程中,有注入通道插队,则先转换完注入通道输入的模拟电压,之后再回到规则通道的转换流程。4.简述ADC采用查询方式的基本程序流程。答:如果要求采用查询方式,程序的基本流程如下:调用HAL_ADC_Start()或HAL_ADCEx_InjectedStart()函数,启动转换;调用HAL_ADC_PollForConversion()或HAL_ADCEx_InjectedPollForConversion()函数以查询转换是否结束;当查询返回结果为HAL_OK时,调用HAL_ADC_GetValue()或HAL_ADCEx_InjectedGetValue()函数读取转换结果。

第8章FreeRTOS基础一、选择题1.下列功能中,FreeRTOS不具有的是(D)。 A.任务管理 B.时间管理 C.内存管理 D.文件管理2.在基于FreeRTOS的应用程序中,FreeRTOS的基础时钟由(A)提供。 A.SysTick定时器 B.看门狗定时器 C.软件定时器 D.基本定时器3.在基于FreeRTOS的工程目录中,用于实现FreeRTOS配置,对FreeRTOS功能进行裁剪的文件是(C)。 A.FreeRTOS.h B.projdefs.h C.FreeRTOSConfig.h D.StackMacros.h二、填空题1.为了采用基于FreeRTOS的应用程序设计方法,只需要在FreeRTOS的模式面板中选择接口类型为CMSIS_V2,从而启用FreeRTOS。2.在STM32Cube固件包中,FreeRTOS是作为一个中间件提供给编程用户使用。3.在CMSIS-V2接口中,CMSIS-FreeRTOS标准接口文件为cmsis_os2.c/.h,其中提供了FreeRTOS与固件包的接口,从而为固件包增加了支持FreeRTOS的功能。4.在基于FreeRTOS的工程目录中,用于实现FreeRTOS初始化、创建用户任务并实现用户任务函数的文件是freertos.c。5.软件定时器的工作状态可以为运行态和休眠态两种。三、问答题1.简述什么是硬实时和软实时。答:在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,则系统被称为硬实时系统。而在软实时系统中,虽然\t"/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/_blank"响应时间同样重要,但是超时却不会导致致命错误。2.与前面各章介绍的基于HAL库的程序相比,简述基于FreeRTOS的程序设计中,主程序的main()函数有哪些区别。答:main()函数主要增加了如下语句和操作:(1)导入cmsis_os.h头文件从而实现CMSIS与FreeRTOS的接口;(2)调用osKernelInitialize()函数实现FreeRTOS内核的初始化;(3)调用MX_FREERTOS_Init()函数实现FreeRTOS的初始化配置;(4)调用osKernelStart()函数启动任务调度器。3.简述在CubeIDE中基于FreeRTOS的程序开发基本流程。答:与基于HAL库的程序设计一样,基于FreeRTOS的程序开发,一般也是首先利用CubeMX对相关外设和FreeRTOS进行初始化配置,然后在生成的初始化工程代码中编辑程序实现具体的应用功能。

第9章FreeRTOS的任务和中断管理一、选择题1.在FreeRTOS中,不属于任务组成元素的是(D)。 A.任务函数 B.任务栈 C.任务控制块 D.任务优先级2.下列不属于任务函数特点的是(A)。 A.任务函数可以有返回值 B.任务函数通常是一个死循环 C.任务函数不能执行到函数体结束 D.任务函数中不能有return语句3.在FreeRTOS中,任务栈的大小至少为(C)字节。 A.32 B.128 C.512 D.10244.在FreeRTOS中,实现动态内存分配创建任务的函数是(B)。 A.MX_FREERTOS_Init() B.xTaskCreate() C.xTaskCreateStatic() D.osThreadNew()5.在FreeRTOS中,默认采用的动态内存管理方案是(C),这种方案能够将邻近的空闲存储块合并,从而减少内存中的碎片。 A.heap1 B.heap2 C.heap4 D.heap56.能够直接进入运行态得到执行的任务,必须事先处于(A)。 A.就绪态 B.挂起态 C.阻塞态 D.创建态7.在FreeRTOS中,所有任务最多可以有(D)个不同的优先级。 A.16 B.32 C.64 D.2568.在CMSIS接口中,实现任务创建的函数是(B)。 A.vPortFree()() B.osThreadNew() C.xTaskCreatec() D.xTaskCreateStatic()9.默认情况下,FreeRTOS能够管理的所有中断的最高优先级数值为(C)。 A.0 B.5 C.15 D.254二、填空题1.在FreeRTOS中,任务主要由3个元素组成,即任务函数、任务栈和任务控制块。2.系统对任务的全部操作都通过任务控制块实现,其中存放有任务的所有信息。3.在CMSIS接口中,实现任务创建的函数是osThreadNew()。4.在FreeRTOS中,函数xTaskCreate()的返回值类型为BaseType_t,而xTaskCreateStatic()函数的返回值类型为TaskHandle_t,是指向任务控制块的指针,称为任务句柄。5.任务一旦创建后,将立即进入就绪态,如果当前没有更高优先级的任务在运行,该任务将立即进入运行态。6.在FreeRTOS中,进行任务调度所采用的时间片默认为1ms,也就是SysTick定时器的中断周期。7.在FreeRTOS的所有任务中,最高优先级数值为255。8.在FreeRTOS中,优先级最低的任务是空闲任务。三、问答题1.简述什么是多任务系统中的任务。答:在多任务系统中,根据功能将整个程序分割为若干个独立的、无限循环且不能返回的小程序,称为任务(Task)。任务是指计算机系统中正在执行或等待执行的一个独立的工作单元,是操作系统进行处理和资源分配的基本单位,可以是一个程序、一个进程或一个线程,取决于操作系统的设计和支持。2.简述什么是任务函数及其与普通函数的主要区别。答:实现任务规定功能的函数称为任务函数。任务函数与普通函数的主要区别有:(1)声明或者原型不同,任务函数的返回值必须为void,并且以指向void数据类型的指针作为参数。(2)FreeRTOS中的任务函数通常由一个死循环构成,不能以任何方式返回,也就是函数中不能有return语句,并且不能执行到函数体结束。3.比较静态和动态内存分配的特点。答:在FreeRTOS中,可以采用静态或动态管理方案为任务进行存储器分配。静态存储器分配减少了程序运行的时间,提高了运行速度。通过动态分配的内存可以在程序执行期间随时分配和取消分配。由于这种方法根据程序的需要提供内存空间,因此内存使用更为高效,但是程序的执行速度稍慢。4.简述静态和动态内存分配创建任务函数在使用时的特点。动态内存分配创建任务时,具有如下特点。(1)任务栈在任务创建的时候创建,不需要预先定义一个全局的静态栈空间和任务栈起始地址,也就是在入口参数中不需要给定参数pxTaskBuffer,内存按需分配,随用随取。(2)任务控制块是通过在该函数中创建任务时通过自动分配内存空间而创建的,因此不需要预先定义任务控制块空间和TCB指针。(3)函数xTaskCreate()返回的是BaseType_t数据类型,而xTaskCreateStatic()函数返回的是指向任务控制块(TaskHandle_t类型)的指针。5.简述延时函数HAL_Delay()和osDelay()在功能和用法上的区别。答:HAL_Delay()是HAL库中的延时函数,在通过调用该函数实现延时的过程中,整个CPU处于阻塞状态,暂停执行其他所有的任务和代码,在延时过程中不能进行任务调度和切换。一般用于主程序或者中断服务程序中。函数osDelay()一般用在任务函数中实现阻塞延时,在延时过程中,所在的任务处于阻塞状态,从而使得其他任务能够得以调度执行。6.简述基于时间片的抢占式任务调度算法。答:这种任务调度算法中,高优先级任务能够抢占CPU的使用权。如果没有任何任务运行,则空闲任务立即进入运行状态。如果有多个处于就绪状态的任务具有相同的优先级,这些任务将以时间片为单位,轮流获得CPU的使用权。

第10章FreeRTOS进程间通信技术一、选择题1.如果采用动态内存分配创建队列,在CubeMX中不需要设置的是(D)。 A.队列名(QueueName) B.队列单元数(QueueSize) C.队列单元位数(ItemSize) D.队列缓冲器名(BufferName)2.在CMSIS接口中,向队列发送消息的函数是(B)。 A.osMessageQueueNew() B.osMessageQueuePut() C.osMessageQueueGet() D.osMessageQueueRelease()3.在FreeRTOS中,获取信号量的函数是(C)。 A.xSemaphoreGive() B.xSemaphoreTake() C.osSemaphoreAcquire() D.osSemaphoreRelease()4.在FreeRTOS中,利用事件组最多可以管理(C)个事件。 A.8 B.16 C.24 D.325.要将事件组egHandle1中的D0、D2和D4位置位,在语句xEventGroupSetBits(egHandle1,flag)中,参数flag应设为(C)。 A.0x00 B.0x05 C.0x15 D.0xea6.在FreeRTOS中,与任务通知事件组的相关定义在(A)文件中。 A.task.c/.h B.queue.c/.h C.semphr.c/.h D.freertos.c/.h7.在调用xTaskNotify()函数发送任务通知时,第3个参数设为2,表示(B)。 A.直接覆盖通知值 B.递增通知值 C.不覆盖通知值 D.设置通知值中的指定位二、填空题1.在FreeRTOS中,队列包括存放消息数据的存储单元和队列控制块。2.在CMSIS接口中,创建队列的函数是osMessageQueueNew()。3.在CMSIS接口中,获取计数信号量当前计数值的函数是osSemaphoreGetCount()。4.假设任务组共有20个事件,则必须将FreeRTOS中的宏常量configUSE_16_BIT_TICKS配置为0。5.要成功地使用事件组实现多个任务之间的同步,可以调用xEventGroupSync()函数。6.要将事件组egHandle1中的低4位全部复位,相应的语句为:xEventGroupClearBits(egHandle1,0x0f);。7.调用CMSIS接口函数向句柄为task1Handle的任务发送通知值0x0f,相应的语句为: osThreadFlagsSet(task1Handle,0x0f);。三、问答题1.简述消息队列的工作过程。答:接收消息时,总是从队头读取数据,从队列中读出消息后,该消息将从队列中删除,后面的数据顺序前移。读出的消息也可以不删除。向队列发送的消息可以存入队头或队尾,队列中原来的消息顺序向后或向前移动。因此,队列的访问可以有两种模式,即先进先出(FIFO)和后进先出(LIFO)模式。2.简述信号量和互斥量用法上的区别。答:信号量和互斥量都是基于消息队列的基本数据结构。信号量(Semaphore)是一种实现进程间通信的机制,可以实现任务之间的同步或临界资源的互斥访问,常用于在一组相互竞争的任务之间对临界资源进行协调访问。互斥量(Mutex,MutualExclusion)又称为互斥信号量,本质上是一种特殊的二值信号量。与信号量不同的是,互斥量支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源的独占式访问。3.简述什么是优先级翻转问题。答:任务的优先级在创建的时候就已经设置和确定了,在系统运行过程中,高优先级的任务可以打断低优先级的任务,抢占CPU的使用权。但是在很多场合中,某些资源只有一个,当低优先级任务正在占用该资源的时候,高优先级任务必须等待低优先级任务使用完该资源后再释放资源。这里

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论