版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
嵌入式系統及應用習題第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.簡述看門狗的主要作用??撮T狗是一個定時器,具有輸入和輸出端口,主要功能是監控微處理器的工作狀態,并在錯誤發生時發出重啟信號。喂狗命令在程序中斷中具有最高優先級。軟件在執行完特定任務后應喂狗,若未按時喂狗,看門狗會認為系統故障并觸發復位。系統上電后,根據工作模式選擇是否啟用看門狗,若啟用,定時器開始計時,未及時喂狗將導致看門狗超時,系統復位。
第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)任務棧在任務創建的時候創建,不需要預先定義一個全局的靜態??臻g和任務棧起始地址,也就是在入口參數中不需要給定參數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)是一種實現進程間通信的機制,可以實現任務之間的同步或臨界資源的互斥訪問,常用于在一組相互競爭的任務之間對臨界資源進行協調訪問?;コ饬浚∕utex,MutualExclusion)又稱為互斥信號量,本質上是一種特殊的二值信號量。與信號量不同的是,互斥量支持互斥量所有權、遞歸訪問以及防止優先級翻轉的特性,用于實現對臨界資源的獨占式訪問。3.簡述什么是優先級翻轉問題。答:任務的優先級在創建的時候就已經設置和確定了,在系統運行過程中,高優先級的任務可以打斷低優先級的任務,搶占CPU的使用權。但是在很多場合中,某些資源只有一個,當低優先級任務正在占用該資源的時候,高優先級任務必須等待低優先級任務使用完該資源后再釋放資源。這里
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年部編版新教材道德與法治五年級上冊教學計劃(含進度表)
- 2026 年牙周病護理病例研討
- 2026 年社區居家護理質控標準建設探討
- 2026 年腫瘤科靶向治療不良反應觀察護理
- 車工多選經典試題及參考答案
- 北京執業藥師歷年試題及答案分享
- 2026年度水稻種植技術試題及答案(權威推-薦)
- 2026年保育員高級理論考試試題及答案
- 2026年高考地理試題匯編及解析科目測試卷
- 2026年高職單招現代農業技術操作模擬卷
- 北師大版四年級下冊數學題每日一練
- xx區加強生物多樣性保護實施方案
- 后勤部管理制度培訓
- 基因治療產品生產用質粒DNA質量控制策略
- 中國國新資產管理有限公司招聘筆試題庫2025
- 邊坡坍塌安全培訓
- GB/T 1839-2025鋼產品鍍鋅層質量試驗方法
- 2025年山東省紀委遴選筆試試題及答案
- 物業服務企業安全管理制度
- 2025中國國新資產管理有限公司相關崗位招聘考試參考試題及答案解析
- 新疆城市綠地養護管理標準
評論
0/150
提交評論