嵌入式系統(tǒng)設(shè)計(jì)(基于STM32F4)徐靈飛習(xí)題解答第五章_第1頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)(基于STM32F4)徐靈飛習(xí)題解答第五章_第2頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)(基于STM32F4)徐靈飛習(xí)題解答第五章_第3頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)(基于STM32F4)徐靈飛習(xí)題解答第五章_第4頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)(基于STM32F4)徐靈飛習(xí)題解答第五章_第5頁(yè)
已閱讀5頁(yè),還剩2頁(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)介

《嵌入式系統(tǒng)設(shè)計(jì)(基于STM32F425章課后題參考答案GPIO答:輸入浮空模式。輸入上拉模式。輸入下拉模式。模擬功能模式。具有上拉/下拉功能的開漏輸出模式。具有上拉/下拉功能的推挽輸出模式。具有上拉/下拉功能的復(fù)用功能推挽模式。具有上拉/下拉功能的復(fù)用功能開漏模式。STM32F429GPIO端口有16個(gè)引腳。當(dāng)引腳被配置為模擬功能模式時(shí),上拉/下拉功能應(yīng)被__。當(dāng)引腳被配置為輸出模式,而輸出類型被配置為開漏時(shí),引腳要輸出高電平,需要使能引腳拉功能 。控制引腳輸出電平時(shí),需要操作ODR 寄存器;獲取引腳狀態(tài)需要操作IDR 寄存器。stm32f429的庫(kù)函數(shù)中,使能GPIOA時(shí)鐘,使用的庫(kù)函數(shù)是RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE)。stm32f429GPIO功能,使用的庫(kù)函數(shù)是voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)。GPIO12GPIO_InitTypeDefGPIO_Pin的值是GPIO_Pin_1|GPIO_Pin_2 。9.在stm32f429的庫(kù)函數(shù)中,讀取某個(gè)特定GPIO引腳狀態(tài),使用的庫(kù)函數(shù)是uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)。.在stm32f429的庫(kù)函數(shù)中,設(shè)定某些特定GPIO引腳輸出狀態(tài),使用的庫(kù)函數(shù)是GPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)voidGPIO_ResetBits(GPIO_TypeDef*uint16_tGPIO_Pin)。答:PMOSNMOSODR寄存器中對(duì)應(yīng)位寫時(shí),NMOS管截止,PMOSODR寄存器中對(duì)應(yīng)位寫‘0’時(shí),NMOSPMOS管截止,引腳輸出低電平。NMOSODR‘1’ODR寄存器中對(duì)應(yīng)位寫‘0’時(shí),NMOS通,PMOS管截止,引腳輸出低電平。5V答:不具備耐5V功能。此時(shí),引腳輸入通道和數(shù)字電路隔離,處于模擬電路狀態(tài)答:GPIO的時(shí)鐘(非常重要,涉及以下文件。GPIO工作模式。GPIO引腳的復(fù)用功能。在應(yīng)用程序中讀取引腳狀態(tài)、控制引腳輸出狀態(tài)或使用復(fù)用功能完成特定功能。編寫程序,將GPIOD13579號(hào)引腳配置為推挽輸出模式,速度為0、246號(hào)、8號(hào)引腳配置為上拉輸入模式。答:GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOD,&GPIO_InitStructure);GPIOD1號(hào)、5號(hào)、7號(hào)引腳輸出高電平,3號(hào)、926號(hào)、8號(hào)上的狀態(tài)讀到處理器中。答:unsignedshortinta,b,c;GPIO_SetBits(GPIOD,GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_7)GPIO_ResetBits(GPIOD,GPIO_Pin_3|GPIO_Pin_9);a=GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_2);b=GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)c=GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_8);STM32F429IGT6GPIOE5GPIOB2LED5-16所示。5-1616請(qǐng)編寫程序?qū)崿F(xiàn)按鍵動(dòng)作的檢測(cè),編寫以下程序。主程序。LED引腳的初始化程序。按鍵檢測(cè)程序。voiddelay_ms(u16nms);答:#defineKEY_ON 1#defineKEY_OFF 0(1)intmain(void){delay_init(168);//初始化延時(shí)函數(shù)LED_GPIO_Config();Key_GPIO_Config();while(1){if(Key_Scan(GPIOE,GPIO_Pin_5)==KEY_ON){GPIO_ToggleBits(GPIOB,GPIO_Pin_2);}}}(2)voidKey_GPIO_Config(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOE,&GPIO_InitStructure);}voidLED_GPIO_Config(void){}(3)

GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);uint8_tKey_Scan(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON){delay_ms(100);//去抖動(dòng)if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON)return KEY_ON;}else

else

returnKEY_OFF;returnKEY_OFF;}5-17所示。矩陣按鍵掃描原理和流程圖。S1~S4引腳初始化程序和按鍵控制程序。圖5-17題17電路圖答:(1)開始①將列線設(shè)置為輸出模式(圖中PB0和PB1,并分別在PB0和PB1設(shè)置為輸入模式(圖中PB2和PB3。都使能上拉。②讀取PB2和PB3狀態(tài),判斷是否有按鍵按下。(判斷原則:PB2PB3都是高電平時(shí),沒有按鍵按下。PB2和PB3低電平是,有按鍵按下。判斷原理:在沒有按鍵按下去的時(shí)候,由于上拉電阻的存在,PB2PB3都是高電平,讀取狀態(tài)時(shí),PB2=1,PB3=1。如果有按鍵按下去的話,摸一個(gè)行線和列線連接在一起。由于PB0PB1PB2PB3狀態(tài)時(shí),就不會(huì)全是高電平。S1時(shí),PB1PB2連在一起,PB2被PB1PB2PB3狀態(tài)時(shí),PB2=0,PB3=1)有按鍵按下則繼續(xù)③,反之則結(jié)束。③延時(shí)去抖動(dòng)。典型值是延時(shí)10ms,不同的按鍵類型,時(shí)間長(zhǎng)度不一樣。④在此判斷是否有按鍵按下,原理同步驟②②④都判斷有按鍵按下時(shí),繼續(xù)⑤。反之則結(jié)束。PB2PB3的狀態(tài),作為判別行號(hào)的依據(jù)。⑥將行線設(shè)置為輸出模式(圖中PB2和PB3,并分別在PB2和PB3設(shè)置為輸入模式(圖中PB0和PB1。都使能上拉。⑦讀取PB0和PB1的狀態(tài),并保存。作為判別列線的依據(jù)。結(jié)束開始①開始①設(shè)置列為輸出低電平,行為輸入模式N②(第1次判斷)Y③延時(shí)10ms④N(第2次判斷)Y⑤保存行號(hào)⑥設(shè)置行為輸出低電平,列為輸入⑦將鍵盤值讀進(jìn)來(lái),存起來(lái)(列號(hào))⑧根據(jù)兩次讀到的行號(hào)和列號(hào)判斷是哪一個(gè)按鍵結(jié)束(2)/*將列設(shè)置為輸入,行設(shè)置為輸出*/voidGPIO_LieIN_HangOUT(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOB,&GPIO_InitStructure);}/*將列設(shè)置為輸出,行設(shè)置為輸入*/voidGPIO_LieOUT_HangIN(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOB,&GPIO_InitStructure);}voidKEY_SCAN(void){u8Lie_Data,Hang_Data;GPIO_LieOUT_HangIN();GPIO_ResetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1);//將列設(shè)置為低電平,掃描行if((GPIO_ReadInputData(GPIOB)&0x0a)!=0x0a){delay_ms(100);//去抖動(dòng)if((GPIO_ReadInputData(GPIOB)&0x0a)!=0x0a){Hang_Data=GPIO_ReadInputData(GPIOB)&0x0a;//保存行掃描結(jié)果GPIO_LieIN_HangOUT();GPI

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論