版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)應(yīng)用實(shí)驗(yàn)報(bào)告姓名:學(xué)號(hào):學(xué)院:專業(yè):班級(jí)指導(dǎo)教師:實(shí)驗(yàn) 1、流水燈實(shí)驗(yàn)實(shí)驗(yàn)要求編程控制實(shí)驗(yàn)板上 LED 燈輪流點(diǎn)亮、熄滅,中間間隔一定時(shí)間。原理分析實(shí)驗(yàn)主要考察對(duì) STM32F10X 系列單片機(jī) GPIO 的輸出操作。參閱數(shù)據(jù)手冊(cè)可知,通過(guò)軟件編程,GPIO 可以配置成以下幾種模式:輸入浮空輸入上拉輸入下拉模擬輸入開(kāi)漏輸出推挽式輸出推挽式復(fù)用功能開(kāi)漏式復(fù)用功能根據(jù)實(shí)驗(yàn)要求,應(yīng)該首先將 GPIO 配置為推挽輸出模式。由原理圖可知,單片機(jī) GPIO 輸出信號(hào)經(jīng)過(guò) 74HC244 緩沖器,連接 LED 燈。由于 74HC244 的 OE1 和 OE2 都接地,為相同電平,故 A 端電平與
2、Y 端電平相同且 LED 燈共陽(yáng),所以,如果要點(diǎn)亮 LED,GPIO 應(yīng)輸出低電平。反之,LED 燈熄滅。程序分析SystemInit()函數(shù)(1),對(duì)系統(tǒng)時(shí)鐘GPIO 進(jìn)行配置。GPIO 配置函數(shù)為 SZ_STM32_LEDInit()(見(jiàn)附錄 2),函數(shù)中首先使能 GPIO 時(shí)鐘:RCC_APB2PeriphClockCmd(GPIO_CLKLed, ENABLE); 然 后 配 置 GPIO 輸 入 輸 出 模 式 : GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再 配 置 GPIO 端 口 翻 轉(zhuǎn) 速 度 : GPIO_InitSt
3、ructure.GPIO_Speed = GPIO_Speed_50MHz; 最后將配置好的參數(shù)寫(xiě)入寄存器,初始化完成: GPIO_Init(GPIO_PORTLed&GPIO_InitStructure)。初始化完成后,程序循環(huán)點(diǎn)亮一個(gè) LED 并熄滅其他 LED,中間通過(guò) Delay() 函數(shù)進(jìn)行延時(shí),達(dá)到流水燈的效果(程序完整代碼見(jiàn)附錄 3)。實(shí)驗(yàn)程序流程圖如下:硬件方面,根據(jù)實(shí)驗(yàn)指南,將實(shí)驗(yàn)板做如下連接:1.3 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)二、按鍵實(shí)驗(yàn)實(shí)驗(yàn)要求STM32函數(shù)中使按鍵所對(duì)應(yīng)的燈亮起。原理分析實(shí)驗(yàn)主要考察對(duì) STM32F10XGPIO 外部中斷功能的使用。STM32F107VCT 一共有
4、5 組 GPIO,分別是 PA15:0、PB15:0、PC15:0、PD15:0PE15:0STM32GPIO用的方式使其對(duì)處理器來(lái)說(shuō)來(lái)自 GPIO 的一共有 16 個(gè)中斷 Px15:0。具體實(shí)現(xiàn)PA0PB0PC0PD0PE0GPIOPB1PC1、PD1PE1共享一個(gè) GPIOPB15PC15PD15PE15共享一個(gè) GPIO 中斷。以下圖片為以 EXTI0 為例的外部中斷/事件線路映像:要產(chǎn)生中斷,必須先配置好并使能中斷線。根據(jù)需要的邊沿檢測(cè)設(shè)置2 個(gè)觸發(fā)寄存器,同時(shí)在中斷屏蔽寄存器的相應(yīng)位寫(xiě)1允許中斷請(qǐng)求。當(dāng)外部中斷在掛起寄存器的對(duì)應(yīng)位寫(xiě)1,將清除該中斷請(qǐng)求。IO 口作為外部中斷輸入,有以
5、下幾個(gè)步驟:初始化 IO 口為輸入。這一步設(shè)置要作為外部中斷輸入的 IO 口的狀態(tài), 可以設(shè)置為上拉/下拉輸入,也可以設(shè)置為浮空輸入,但浮空的時(shí)候外部一定要算使用了上拉/下拉,也建議使用外部上拉/下拉電阻,這樣可以一定程度防止外部干擾帶來(lái)的影響。開(kāi)啟 IO 口復(fù)用時(shí)鐘,設(shè)置 IO 口與中斷線的映射關(guān)系。STM32 的 IO 口與中斷線的對(duì)應(yīng)關(guān)系需要配置外部中斷配置寄存器 EXTICR,這樣我們要先開(kāi)啟復(fù)用時(shí)鐘,然后配置 IO來(lái)。開(kāi)啟與該 IO/置中斷產(chǎn)生的條件,STM32并設(shè)置該中斷的 EMR 位的話,會(huì)引起軟件仿真不能跳到中斷,而硬件上是可以的。而不設(shè)置 EMR,軟件仿真就可以進(jìn)入中斷服務(wù)函
6、數(shù),并且硬件上也是可以的。建議不要配置 EMR 位。配置中斷分組(NVIC),并使能中斷。這一步,我們就是配置中斷的分組以及使能,對(duì) STM32 的中斷來(lái)說(shuō),只有配置了 NVIC 的設(shè)置,并開(kāi)啟才能被執(zhí)行,否則是不會(huì)執(zhí)行到中斷服務(wù)函數(shù)里面去的。編寫(xiě)中斷服務(wù)函數(shù)。這是中斷設(shè)置的最后一步,中斷服務(wù)函數(shù),是必不可由原理圖可知,按鍵未按下時(shí),GPIO 讀到的為高電平,按鍵按下后,IO 口接地,產(chǎn)生一個(gè)電平跳變,所以外部中斷觸發(fā)方式應(yīng)該設(shè)置為下降沿觸發(fā)。程序分析LED 燈的點(diǎn)亮與實(shí)驗(yàn)一中相同,不過(guò)多贅述。程序首先對(duì)按鍵進(jìn)行初始化, 初始化函數(shù)為 GPIO_KEY_Config()(見(jiàn)附錄 4),配置過(guò)程
7、與實(shí)驗(yàn)一中 GPIO 配置GPIOGPIOGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU。然后執(zhí)行 GPIO 中斷初始化函數(shù) KEY_EXIT_Init()(見(jiàn)附錄 5),首先將連接按鍵的 IO 口與 EXTI 線到一起:GPIO_EXTILineConfig(GPIO_KEY1_EXTI_PORT_SOURCE,GPIO_KEY1_EXTI_PIN_ SOURCE);然后將觸發(fā)方式設(shè)置為下降沿觸發(fā)并寫(xiě)入中斷配置寄存器,并使能中斷: EXTI_InitStructure.EXTI_Line = GPIO_KEY1_EXTI_LINE; EXTI_Ini
8、tStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure)。之后進(jìn)行中斷分組配置及中斷優(yōu)先級(jí)配置,函數(shù)為 InterruptConfig()(見(jiàn)附錄6)。配置過(guò)程較為復(fù)雜,涉及到搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的概念。程序首先將所有外部中斷歸為 NVIC_PriorityGroup_2,即 2 位搶占優(yōu)先級(jí)和 2 位響應(yīng)優(yōu)先
9、級(jí):NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);然后將所有外部中斷信號(hào)的搶占優(yōu)先級(jí)規(guī)定為 01并將配置好的參數(shù)寫(xiě)入對(duì)應(yīng)寄存器中,完成配置:NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY1_EXTI_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd =
10、ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY2_EXTI_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = GPIO_KEY3_EXTI_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =
11、 2;NVIC_Init(&NVIC_InitStructure)。初始化完成后,程序進(jìn)入等待按鍵中斷觸發(fā)狀態(tài),一旦按鍵按下,則進(jìn)入中斷服務(wù)函數(shù) EXTI9_5_IRQHandler()(見(jiàn)附錄 7)中。在函數(shù)中對(duì)LED 燈進(jìn)行點(diǎn)亮、熄滅操作,并重置中斷產(chǎn)生標(biāo)志位。實(shí)驗(yàn)流程圖如下(主函數(shù)代碼見(jiàn)附錄 8):硬件連接方式如下圖所示:2.3 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)三、定時(shí)器實(shí)驗(yàn)實(shí)驗(yàn)要求利用 STM32 的通用定時(shí)器 TIM5 產(chǎn)生一個(gè) 1S 的中斷,在中斷函數(shù)中實(shí)現(xiàn)LED1、LED2、LED3、LED4 同時(shí)翻轉(zhuǎn)的效果。原理分析實(shí)驗(yàn)主要考察對(duì) STM32F10X 系列單片機(jī)定時(shí)器的使用。實(shí)驗(yàn)中使用的 STM3
12、2F107 單片機(jī)有多達(dá) 10 個(gè)定時(shí)器,包括:多達(dá) 4 個(gè) 16 位定時(shí)器,每個(gè)定時(shí)器有多達(dá) 4 個(gè)用于輸入捕獲/輸出比較/PWM 或脈沖計(jì)數(shù)的通道和增量編碼器輸入1 個(gè) 16 位帶死區(qū)控制和緊急剎車(chē),用于電機(jī)控制的 PWM 高級(jí)控制定時(shí)器2 個(gè)獨(dú)立的看門(mén)狗定時(shí)器(獨(dú)立的和窗口型的)系統(tǒng)時(shí)間定時(shí)器:24 位自減型計(jì)數(shù)器216 位基本定時(shí)器用于驅(qū)動(dòng) DAC根據(jù)時(shí)鐘樹(shù)可知,系統(tǒng)時(shí)鐘經(jīng)過(guò)分頻之后,進(jìn)入 TIM5 的時(shí)鐘模塊入口,在經(jīng)過(guò)預(yù)分頻處理,才供給TIM5 作時(shí)鐘使用。預(yù)分頻器的系數(shù)為:TIMx_PSC,當(dāng)TIMx_PSC = 0 時(shí)表示不分頻,則 TIM5 定時(shí)器的時(shí)鐘用CK_T=模塊入口時(shí)
13、鐘 當(dāng)TIMx_PSC= 1時(shí)表示不分頻,則TIM5 定時(shí)器的 時(shí) 鐘 用CK_T= 模 塊 入 口 時(shí) 鐘36MHz ; 以 此 類 推 。 公 式 為 : CK_T=fCK_PSC/(PSC15:0+1),其中 PSC 最大為 65535。其次是 TIM5 計(jì)數(shù)器計(jì)數(shù)值的設(shè)置,TIM5 計(jì)數(shù)器以 CK_T 為時(shí)鐘計(jì)數(shù),向下計(jì)數(shù)到0或向上計(jì)數(shù)到設(shè)定值(TIMx_ARR)則產(chǎn)生中斷。以向上計(jì)數(shù)為例,從 0 始計(jì)數(shù)到設(shè)定值TIMx_ARR 時(shí)產(chǎn)生中斷要產(chǎn)生一秒一次中斷則要使計(jì)數(shù)器的乘以預(yù)分頻的值 =系統(tǒng)時(shí)鐘72MHz,其中計(jì)數(shù)器的值和預(yù)分頻值都必須小于65535我們使預(yù)分頻值為計(jì)數(shù)器值為則720
14、0*10000=72,000,00072M。其中拆分方法很多35000*2000 = 72,000,000,分頻值都必須小于 65535LED 燈翻轉(zhuǎn)。程序分析LED 初始化部分與實(shí)驗(yàn)一相同,完成初始化后,點(diǎn)亮所有LED 燈。定時(shí)器配置函數(shù)為 TIM5_Init()(見(jiàn)附錄 6)。配置函數(shù)首先使能計(jì)數(shù)器時(shí)鐘:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); 然 后 自 動(dòng) 裝 載 計(jì) 數(shù) 值 , 計(jì) 數(shù) 從 0 開(kāi) 始 : TIM_TimeBaseStructure.TIM_Period = (100 - 1);再 對(duì) 計(jì) 時(shí) 器 進(jìn) 行
15、 預(yù) 分 頻 系 數(shù) 設(shè) 置 : TIM_TimeBaseStructure.TIM_Prescaler = (7200 - 1); 并將計(jì)數(shù)器設(shè)置為向上計(jì)數(shù):TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 最后寫(xiě)入計(jì)時(shí)器配置寄存器,完成配置:TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure)。配置完成后,還要對(duì)計(jì)數(shù)器溢出標(biāo)志位進(jìn)行清零,并打開(kāi)溢出中斷,使能計(jì)數(shù)器以開(kāi)始計(jì)數(shù)。TIM_ClearITPendingBit(TIM5, TIM_IT_Update); TIM_ITConf
16、ig(TIM5, TIM_IT_Update, ENABLE);TIM_Cmd(TIM5, ENABLE)。為 NVIC_Configuration()(見(jiàn)附錄7)。函數(shù)首先將中斷向量表首地址置0 x08000000:NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0 x0000); 然 后 使 能 TIM5 中 斷 : NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure
17、.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 最后將配置參數(shù)寫(xiě)入中斷控制寄存器,完成配置: NVIC_Init(&NVIC_InitStructure)。一旦中斷產(chǎn)生,系統(tǒng)會(huì)對(duì)中斷產(chǎn)生響應(yīng),暫停所有正在執(zhí)行的低優(yōu)先級(jí)任且將任務(wù)信息和數(shù)據(jù)壓入對(duì)應(yīng)對(duì)戰(zhàn)區(qū),并進(jìn)入中斷服務(wù)函數(shù)TIM5_IRQHandler()(見(jiàn)附錄 8)中進(jìn)行處理。在中斷服務(wù)函數(shù)中判斷并清除了中斷標(biāo)志位,以便定時(shí)器下一次計(jì)數(shù)中斷產(chǎn)生。函數(shù)中調(diào)用了 LED_Spark()函數(shù)(見(jiàn)附錄 9),實(shí)現(xiàn)了 LED 的閃爍。程序
18、流程圖如下:硬件連接方式如下圖所示:實(shí)驗(yàn)四、按鍵中斷控制 LED 燈定時(shí)閃爍實(shí)驗(yàn)要求STM32LED1 以 1S3LED2 以 2S 3 次,SKEY3 控制 LED3 以 3S3 次。原理分析2OOGPIO 外部中斷和定時(shí)器部中斷的處理,即如何確定兩種不同中斷的優(yōu)先級(jí)。這里的使用的方法是, 將所有按鍵外部中斷置于中斷分組 2 , 即NVIC_PriorityGroup_2 中。將所有按鍵中斷搶占優(yōu)先級(jí)置為 0,即最高級(jí)別中斷, 響應(yīng)優(yōu)先級(jí)置分別置為 1、2、3,相互區(qū)別。將定時(shí)器中斷搶占優(yōu)先級(jí)置為 1, 相應(yīng)優(yōu)先級(jí)社會(huì)中低于按鍵中斷,使其可以被按鍵信號(hào)中斷計(jì)時(shí),并刷新 LED 閃爍狀態(tài)。程序分析LED主函數(shù)如下:int main(void)/* LED 初始化 */ LED_config();/* LED 閃爍 */ Led_Turn_on_all(); Delay(3000000);Led_Turn_off_all();Delay(3000000);Led_Tur
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流團(tuán)隊(duì)協(xié)作技巧培訓(xùn)
- 班級(jí)傳承紅色文化的工作計(jì)劃
- 《銀行卡業(yè)務(wù)培訓(xùn)》課件
- 《解放戰(zhàn)爭(zhēng)復(fù)習(xí)》課件
- 2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)期末全真模擬培優(yōu)卷(蘇教版)【A3版】-A4
- 《中國(guó)成人白內(nèi)障摘除手術(shù)指南(2023年)》解讀
- 《論文的寫(xiě)作技巧》課件
- 【9物(人)期末】淮北市2023-2024學(xué)年九年級(jí)上學(xué)期1月期末物理試題
- 《俄歇電子能譜儀》課件
- 《保險(xiǎn)概念說(shuō)明會(huì)》課件
- 充電樁工程施工組織設(shè)計(jì)施工組織
- 起訴狀(淘寶虛假交易)
- 責(zé)任組長(zhǎng)競(jìng)聘任艷
- 江蘇省環(huán)保集團(tuán)2023屆秋季校園招聘85人上岸筆試歷年難、易錯(cuò)點(diǎn)考題附帶參考答案與詳解
- 第五單元晚晴時(shí)期的內(nèi)憂外患與救亡圖存(單元教學(xué)設(shè)計(jì))高一歷史系列(中外歷史綱要上冊(cè))
- 潛力評(píng)估表格
- 化工設(shè)計(jì)習(xí)題及答案
- 提高急性腦梗死的再灌注率PDCA
- IT日語(yǔ)郵件寫(xiě)作課件
- 《孫悟空大鬧蟠桃會(huì)大鬧天宮》-課件
- 四年級(jí)上冊(cè)數(shù)學(xué)說(shuō)課稿-圖形與幾何-北師大版
評(píng)論
0/150
提交評(píng)論