《STM32Cube嵌入式系統(tǒng)應(yīng)用》 HAL庫(kù)版本 試卷及答案 共2套_第1頁(yè)
《STM32Cube嵌入式系統(tǒng)應(yīng)用》 HAL庫(kù)版本 試卷及答案 共2套_第2頁(yè)
《STM32Cube嵌入式系統(tǒng)應(yīng)用》 HAL庫(kù)版本 試卷及答案 共2套_第3頁(yè)
《STM32Cube嵌入式系統(tǒng)應(yīng)用》 HAL庫(kù)版本 試卷及答案 共2套_第4頁(yè)
《STM32Cube嵌入式系統(tǒng)應(yīng)用》 HAL庫(kù)版本 試卷及答案 共2套_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

“單片機(jī)原理與應(yīng)用”試卷(A)參考答案一、簡(jiǎn)答題。(每小題4分,共24分)1.嵌入式硬件主要包括哪幾部分?【答案】嵌入式硬件(硬件層)是嵌入式系統(tǒng)的物理基礎(chǔ),主要包括嵌入式處理器、存儲(chǔ)器、輸入/輸出(I/O)接口及電源等。2.簡(jiǎn)述嵌套向量中斷控制器(NVIC)的主要特性?!敬鸢浮刻幚砥骱说慕涌诰o密相連,可以實(shí)現(xiàn)低延遲的中斷處理,并有效地處理晚到的中斷。STM32嵌套向量中斷控制器(NVIC)的主要特性如下:具有43個(gè)可屏蔽中斷通道(不包含16個(gè)Cortex-M3的中淅線)。具有16個(gè)可編程的優(yōu)先等級(jí)??蓪?shí)現(xiàn)低延遲的異常和中斷處理。具有電源管理控制。系統(tǒng)控制寄存器的實(shí)現(xiàn)。3.簡(jiǎn)述STM32的USART的功能特點(diǎn)?!敬鸢浮縎TM32的USART為通用同步異步收發(fā)器,其可以與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART還可以利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。STM32的USART支持同步單向通信和半雙工單線通信。同時(shí),其也支持LIN(局部互連網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù))SIRENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。STM32還具備多處理器通信能力。另外,通過(guò)多緩沖器配置的DMA方式,還可以實(shí)現(xiàn)高速數(shù)據(jù)通信。4.有哪些特征提高了CortexM4的中斷響應(yīng)性能?【答案】以下特征提高了CortexM4的中斷響應(yīng)性能:一些寄存器的自動(dòng)保存和回復(fù);中斷搶占;咬尾技術(shù);遲來(lái)技術(shù)。5.簡(jiǎn)述STM32TIM的計(jì)數(shù)器模式。【答案】STM32通用定時(shí)器TIM的16位計(jì)數(shù)器可以采用三種方式工作,分別為向上計(jì)數(shù)模式、向下計(jì)數(shù)模式和中央對(duì)齊模式(向上/向下計(jì)數(shù))。6.CAN的數(shù)據(jù)幀由哪7個(gè)段構(gòu)成?【答案】數(shù)據(jù)幀由7個(gè)段構(gòu)成:(1)幀起始:表示數(shù)據(jù)幀開(kāi)始的段;(2)仲裁段:表示數(shù)據(jù)幀優(yōu)先級(jí)的段;(3)控制段:表示數(shù)據(jù)的字節(jié)數(shù)及保留的段;(4)數(shù)據(jù)段:數(shù)據(jù)的內(nèi)容,一幀可發(fā)送0~8字節(jié)的數(shù)據(jù);(5)CRC段:檢查幀的傳輸錯(cuò)誤的段;(6)ACK段:表示確定正常接收的段;(7)幀結(jié)束:表示數(shù)據(jù)幀結(jié)束的段。二、選擇題(每小題3分,共18分)1.通用定時(shí)器TIMx的特性(ABCD)。(多選)A.具備16位向上,向下,向上/向下自動(dòng)裝載計(jì)數(shù)器。B.具備16位可編程預(yù)分頻器。C.具備4個(gè)獨(dú)立通道。D.可以通過(guò)事件產(chǎn)生中斷,中斷類型豐富,具備DMA功能。2.通用定時(shí)器TIMx的特殊工作模式包括(ABCD)。(多選)A.輸入捕獲模式B.PWM輸入模式C.輸出模式D.單脈沖模式(OPM)3.STM32提供了三種不同的時(shí)鐘源,其都可被用來(lái)驅(qū)動(dòng)系統(tǒng)時(shí)鐘SYSCLK,這三種時(shí)鐘源分別為(ABC)。A.HSI振蕩器時(shí)鐘B.HSE振蕩器時(shí)鐘C.PLL時(shí)鐘D.HLI振蕩時(shí)鐘4.在STM32中,當(dāng)(AB)生時(shí),將產(chǎn)生電源復(fù)位。(多選)A.從待機(jī)模式中返回B.上電/掉電復(fù)位(POR/PDR復(fù)位)C.NRST管腳上的低電平D.PLL5.STM32的外部中斷/事件控制器(EXTI)支持(C)個(gè)中斷/事件請(qǐng)求。A.16B.43C.19D.366.在ADC的掃描模式中,如果設(shè)置了DMA位,在每次EOC后,DMA控制器把規(guī)則組通道的轉(zhuǎn)換數(shù)據(jù)傳輸?shù)剑ˋ)中。A.SRAMB.FlashC.ADC_JDRx寄存器D.ADC_CR1三、【答案】電路圖如下:程序代碼:#include"stm32f10x.h"intT2_cnt=0;TIM_HandleTypeDefhtim2;voidRCC_init(void){ __HAL_RCC_TIM2_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE();}voidNVIC_init(void){HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);HAL_NVIC_SetPriority(TIM2_IRQn,0,0);HAL_NVIC_EnableIRQ(TIM2_IRQn);}voidGPIO_init(void){GPIO_InitTypeDefGPIO_InitStruct={0};GPIO_InitStruct.Pin=GPIO_PIN_6|GPIO_PIN_7;GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull=GPIO_PULLUP;GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOE,&GPIO_InitStruct);}voidTIM2_init(void){htim2.Instance=TIM2;htim2.Init.Prescaler=71;htim2.Init.CounterMode=TIM_COUNTERMODE_UP;htim2.Init.Period=9999;htim2.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;htim2.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;if(HAL_TIM_Base_Init(&htim2)!=HAL_OK){Error_Handler();}HAL_TIM_Base_Start_IT(&htim2);}intmain(void){ RCC_init(); NVIC_init(); TIM2_init(); GPIO_init(); while(1) { if(T2_cnt<=50) HAL_GPIO_WritePin(GPIOE,GPIO_Pin_6|GPIO_Pin_7,0); elseif(T2_cnt>50&&T2_cnt<=60) HAL_GPIO_WritePin(GPIOE,GPIO_Pin_7,1); elseif(T2_cnt>60) HAL_GPIO_WritePin(GPIOE,GPIO_Pin_6|GPIO_Pin_7,1);}}voidTIM2_IRQHandler(void){ if(__HAL_TIM_GET_FLAG(&htim2,TIM_FLAG_UPDATE)==SET) { T2_cnt++; if(T2_cnt>=70) T2_cnt=0; __HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE); }}四、【答案】假設(shè)采集到的ADC值為整數(shù),可以使用查表的方法得到具體的溫度值。使用模擬量輸入通道1進(jìn)行模擬量的輸入,使用定時(shí)器2得到10ms的定時(shí)。程序代碼如下:#include"stm32f10x.h"unsignedintcodeADCValueToTemp[100]= {248, 262, 277, 293, 310, 327, 345, 364, 384, 404,425, 447, 470, 494, 518, 543, 570, 597, 624, 653,683, 713, 744, 776, 809, 842, 877, 912, 948, 984,1022,1060,1098,1137,1177,1217,1258,1299,1341,1383,1425,1468,1511,1554, 1598,1641,1685,1729,1772,1816,1860,1903,1946,1990,2033, 2075,2117,2159,2201,2243,2283,2324,2364,2403,2442,2481, 2519,2556,2593,2629,2664,2699,2734,2767, 2800,2833,2864,2895,2926, 2956,2985,3013,3041,3069,3095,3121,3147,3172,3195, 3219,3242,3265,3286,3308,3328,3348,3368,3388,3406,3424,};voidTIM2_init(void);unsignedcharGetTemperature(void);UART_HandleTypeDefhuart1;TIM_HandleTypeDefhtim2;ADC_HandleTypeDefhadc1;voidUSART1_Config(void){GPIO_InitTypeDefGPIO_InitStruct={0}; __HAL_RCC_USART1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin=GPIO_PIN_9;GPIO_InitStruct.Mode=GPIO_MODE_AF_PP;GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);GPIO_InitStruct.Pin=GPIO_PIN_10;GPIO_InitStruct.Mode=GPIO_MODE_INPUT;GPIO_InitStruct.Pull=GPIO_NOPULL;HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); huart1.Instance=USART1;huart1.Init.BaudRate=9600;huart1.Init.WordLength=UART_WORDLENGTH_8B;huart1.Init.StopBits=UART_STOPBITS_1;huart1.Init.Parity=UART_PARITY_NONE;huart1.Init.Mode=UART_MODE_TX_RX;huart1.Init.HwFlowCtl=UART_HWCONTROL_NONE;huart1.Init.OverSampling=UART_OVERSAMPLING_16;if(HAL_UART_Init(&huart1)!=HAL_OK){Error_Handler();}}intmain(void){RCC_PeriphCLKInitTypeDefPeriphClkInit={0};ADC_ChannelConfTypeDefsConfig={0}; GPIO_InitTypeDefGPIO_InitStruct={0};u16dat;USART1_Config();//enableADCchannel1clock__HAL_RCC_ADC1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();//initializeADCPeriphClkInit.PeriphClockSelection=RCC_PERIPHCLK_ADC;PeriphClkInit.AdcClockSelection=RCC_ADCPCLK2_DIV6;if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit)!=HAL_OK){Error_Handler();}GPIO_InitStruct.Pin=GPIO_PIN_1;GPIO_InitStruct.Mode=GPIO_MODE_ANALOG;HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);hadc1.Instance=ADC1;hadc1.Init.ScanConvMode=ADC_SCAN_DISABLE;hadc1.Init.ContinuousConvMode=DISABLE;hadc1.Init.DiscontinuousConvMode=DISABLE;hadc1.Init.ExternalTrigConv=ADC_SOFTWARE_START;hadc1.Init.DataAlign=ADC_DATAALIGN_RIGHT;hadc1.Init.NbrOfConversion=1;if(HAL_ADC_Init(&hadc1)!=HAL_OK){Error_Handler();}sConfig.Channel=ADC_CHANNEL_1;sConfig.Rank=ADC_REGULAR_RANK_1;sConfig.SamplingTime=ADC_SAMPLETIME_239CYCLES_5;if(HAL_ADC_ConfigChannel(&hadc1,&sConfig)!=HAL_OK){Error_Handler();}HAL_ADCEx_Calibration_Start(&hadc1);ADC_Enable(&hadc1);while(1);}voidTIM2_init(void){htim2.Instance=TIM2;htim2.Init.Prescaler=71;htim2.Init.CounterMode=TIM_COUNTERMODE_UP;htim2.Init.Period=9999;htim2.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;htim2.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;if(HAL_TIM_Base_Init(&htim2)!=HAL_OK){Error_Handler();}HAL_TIM_Base_Start_IT(&htim2);}voidTIM2_IRQHandler(void){ staticunsignedcharT2_cnt=0;unsignedcharsend_temp; if(__HAL_TIM_GET_FLAG(&htim2,TIM_FLAG_UPDATE)==SET) { T2_cnt++; if(T2_cnt>=100){ T2_cnt=0; send_temp=GetTemperature(); HAL_UART_Transmit(&huart1,(uint8_t*)&send_temp,1,1000); } __HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE); }}unsignedcharGetTemperature(void){ unsignedchari,j,cur_temp; unsignedintADC_Value,ADC_ValueSum;//ADCvalue,sumoftheADCvalues ADC_ValueSum=0; for(i=0;i<10;i++) {HAL_ADC_Start(&hadc1);//StartADC while(!__HAL_ADC_GET_FLAG(hadc,ADC_FLAG_EOC));//waittheendofconvertion ADC_Value=HAL_ADC_GetValue(&hadc1); //gettheADCvalue ADC_ValueSum=ADC_ValueSum+ADC_Value; } ADC_Value=(ADC_ValueSum/10; //gettheaveragevalue //lookupthetable for(j=0;j<100;j++) { if((ADC_Value>=ADCValueToTemp[j])&&(ADC_Value<ADCValueToTemp[j+1])) break; }if(j<15) cur_temp=15–j; //negativetemperatur else cur_temp=cur_temp-15;//positivetemperature returncur_temp;}《STM32Cube嵌入式系統(tǒng)應(yīng)用》試卷B-HAL庫(kù)版本試卷及答案一、簡(jiǎn)述題1.簡(jiǎn)述STM32的GPIO的一些主要特點(diǎn)(至少5個(gè))。【答案】主要特點(diǎn)如下:通用I/O,可以作為輸出、輸入等功能。單獨(dú)的位設(shè)置或位清除。外部中斷/喚醒線。復(fù)用功能(AF)和重映射。GPIO鎖定機(jī)制。2.簡(jiǎn)述STM32的雙ADC工作模式?!敬鸢浮吭谟袃蓚€(gè)ADC的STM32器件中,可以使用雙ADC模式。在雙ADC模式里,根據(jù)ADC_CR1寄存器中DUALMOD[2:0]位所選的模式,轉(zhuǎn)換的啟動(dòng)可以是ADC1主和ADC2從的交替觸發(fā)或同時(shí)觸發(fā)。雙ADC工作模式主要包括如下幾種:同時(shí)注入模式、同時(shí)規(guī)則模式、快速交替模式、慢速交替模式、交替觸發(fā)模式和獨(dú)立模式。3.簡(jiǎn)述STM32時(shí)鐘的類型。【答案】STM32提供了三種不同的時(shí)鐘源,其都可被用來(lái)驅(qū)動(dòng)系統(tǒng)時(shí)鐘SYSCLK,這三種時(shí)鐘源分別為:HSI振蕩器時(shí)鐘、HSE振蕩器時(shí)鐘、PLL時(shí)鐘。4.簡(jiǎn)述不同復(fù)用功能的重映射?!敬鸢浮繛榱藘?yōu)化不同引腳封裝的外設(shè)數(shù)目,可以把一些復(fù)用功能重新映射到其他引腳上。這時(shí),復(fù)用功能不再映射到它們?cè)挤峙涞囊_上。在程序上,是通過(guò)設(shè)置復(fù)用重映射和調(diào)試I/O配置寄存器(AFIO_MAPR)來(lái)實(shí)現(xiàn)引腳的重新映射。5.STM32CubeMX軟件有什么特點(diǎn)?【答案】(1)集成了ST有限公司的每一款型號(hào)的MCU/MPU的可配置的圖形界面,能夠自動(dòng)提示IO沖突并且對(duì)于復(fù)用IO可自動(dòng)分配。(2)具有動(dòng)態(tài)驗(yàn)證的時(shí)鐘樹(shù)。(3)能夠很方便的使用所集成的中間件。(4)能夠估算MCU/MPU在不同主頻運(yùn)行下的功耗。(5)能夠輸出不同編譯器的工程,比如能夠直接生成MDK、EWARM、STM32CubeIDE、MakeFile等工程。6.MDK-ARM主要包含哪四個(gè)核心組成部分?【答案】MDK-ARM主要包含以下四個(gè)核心組成部分:1)μVisionIDE:是一個(gè)集項(xiàng)目管理器、源代碼編輯器、調(diào)試器于一體的強(qiáng)大集成開(kāi)發(fā)環(huán)境。2)RVCT:ARM公司提供的編譯工具鏈,包含編譯器、匯編器、鏈接器和相關(guān)工具。3)RL-ARM:實(shí)時(shí)庫(kù),可將其作為工程的庫(kù)來(lái)使用。4)ULINK/JLINKUSB-JTAG仿真器:用于連接目標(biāo)系統(tǒng)的調(diào)試接口(JTAG或SWD方式),幫助用戶在目標(biāo)硬件上調(diào)試程序。二、選擇題1.哪些是STM32的ADC系統(tǒng)的特點(diǎn)(ABCD)(多選)。A.12-位分辨率B.自校準(zhǔn)C.可編程數(shù)據(jù)對(duì)齊D.單次和連續(xù)轉(zhuǎn)換模式2.STM32嵌套向量中斷控制器(NVIC)具有(A)個(gè)可編程的優(yōu)先等級(jí)。A.16B.43C.72D.363.STM32的USART根據(jù)(A)寄存器M位的狀態(tài),來(lái)選擇發(fā)送8位或者9位的數(shù)據(jù)字。A.USART_CR1B.USART_CR2C.USART_BRRD.USART_CR34.通用定時(shí)器TIMx的特性(ABCD)。(多選)A.具備16位向上,向下,向上/向下自動(dòng)裝載計(jì)數(shù)器。B.具備16位可編程預(yù)分頻器。C.具備4個(gè)獨(dú)立通道。D.可以通過(guò)事件產(chǎn)生中斷,中斷類型豐富,具備DMA功能。5.STM32的可編程通用定時(shí)器的時(shí)基單元包含(ABC)。(多選)A.計(jì)數(shù)器寄存器(TIMx_CNT)B.預(yù)分頻器寄存器(TIMx_PSC)C.自動(dòng)裝載寄存器(TIMx_ARR)D.以上都不是6.ARMCortex-M3不可以通過(guò)(D)喚醒CPU。A.I/O端口B.RTC鬧鐘C.USB喚醒事件D.PLL三、(20分)【答案】電路圖如下:程序代碼:#include"stm32f10x.h"intTime_Count=0;intRepeat_Count=10;TIM_HandleTypeDefhtim2;voidRCC_init(void){ __HAL_RCC_TIM2_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE();}voidNVIC_init(void){HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);HAL_NVIC_SetPriority(TIM2_IRQn,0,0);HAL_NVIC_EnableIRQ(TIM2_IRQn);}voidGPIO_init(void){GPIO_InitTypeDefGPIO_InitStruct={0};GPIO_InitStruct.Pin=GPIO_PIN_6;GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull=GPIO_PULLUP;GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOE,&GPIO_InitStruct);}voidTIM2_init(void){htim2.Instance=TIM2;htim2.Init.Prescaler=71;htim2.Init.CounterMode=TIM_COUNTERMODE_UP;htim2.Init.Period=9999;htim2.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;htim2.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;if(HAL_TIM_Base_Init(&htim2)!=HAL_OK){Error_Handler();}HAL_TIM_Base_Start_IT(&htim2);}intmain(void){ RCC_init(); NVIC_init(); TIM2_init(); GPIO_init(); while(1) { if(Repeat_Count>5) { if(Time_Count>=90)HAL_GPIO_WritePin(GPIOE,GPIO_Pin_6,0); else HAL_GPIO_WritePin(GPIOE,GPIO_Pin_6,1); } else { if(Time_Count>=50) HAL_GPIO_WritePin(GPIOE,GPIO_Pin_6,0); else HAL_GPIO_WritePin(GPIOE,GPIO_Pin_6,1); } }}voidTIM2_IRQHandler(void){ if(__HAL_TIM_GET_FLAG(&htim2,TIM_FLAG_UPDATE)==SET) { Time_Count++; if(Time_Count==100) { Time_Count=0; Repeat_Count--; if(Repeat_Count==0) Repeat_Count=10; } __HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE); }}四、(30分)【答案】程序代碼如下:#include"stm32f10x.h"http://DeviceheaderunsignedcharHost_String[18]="EXTIPA0Interrupt";inti=0;UART_HandleTypeDefhuart1;voidUSART1_Config(void){ GPIO_InitTypeDefGPIO_InitStruct={0}; __HAL_RCC_USART1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin=GPIO_PIN_9;GPIO_InitStruct.Mode=GPIO_MODE_AF_PP;GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論