版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Cortex-M4原理與實(shí)踐實(shí)驗(yàn)報告實(shí)驗(yàn)一 GPIO 接口實(shí)驗(yàn)一.實(shí)驗(yàn)?zāi)康?. 掌握 Code Composer Studio 6.0(以下簡稱 CCS)的安裝和配置步驟過程。2. 了解 Cortex-M4 開發(fā)系統(tǒng)和計算機(jī)與目標(biāo)系統(tǒng)的連接方法。3. 了解 CCS 軟件的操作環(huán)境和基本功能,了解 TM4C1294 軟件開發(fā)過程。1) 學(xué)習(xí)創(chuàng)建工程和管理工程的方法;2) 了解基本的編譯和調(diào)試功能;3) 學(xué)會設(shè)置斷點(diǎn),注入和提取數(shù)據(jù)文件;4) 學(xué)習(xí)使用觀察窗口;5) 了解圖形功能的使用方法。二實(shí)驗(yàn)程序流程圖 本實(shí)驗(yàn)通過多種方法來控制 GPIO 端口的讀寫,通過 GPIO 端口的讀寫來控制主板上兩
2、個獨(dú)立的 LED 燈,D1、D2 的點(diǎn)亮和熄滅。主板上 D1、D2 、D3 對應(yīng)的 GPIO 口分別為 PF1、 PF2、PF3。三實(shí)驗(yàn)代碼、注釋及現(xiàn)象#include <stdint.h>#include <stdbool.h>#include "inc/hw_memmap.h"#include "inc/hw_types.h"#include "driverlib/pin_map.h"#include "driverlib/sysctl.h"#include "driverli
3、b/gpio.h"int main(void)SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); /使能 GPIOF 口GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT); /設(shè)置為輸出模式 GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD); /進(jìn)一步設(shè)置為 8mA、帶轉(zhuǎn)換速率控制的推挽輸出 GPIOPinWrite(GPIO_PORTF_BASE,GPIO_P
4、IN_1, 0xff);/PF1 輸出高電平while(1); /LED_D1 on 簡單LE現(xiàn)象:LED1 被點(diǎn)亮四.思考題1.代碼#include <stdint.h>#include <stdbool.h>#include "inc/hw_memmap.h"#include "inc/hw_types.h"#include "driverlib/pin_map.h"#include "driverlib/sysctl.h"#include "driverlib/gpio.h&
5、quot;int main(void) SysCtlClockFreqSet(SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 10000000); /設(shè)置系統(tǒng)時間為10MHZSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);/使能 GPIOF 口 GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_DIR_MODE_OUT); /設(shè)置為輸出模式 GPIOPadConfi
6、gSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD); /進(jìn)一步設(shè)置為 8mA、帶轉(zhuǎn)換速率控制的推挽輸出while(1)GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xff); /PF1輸出高,點(diǎn)亮LED0SysCtlDelay(100*(10000000/3000); /延時n*1ms 100msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0); /PF1輸出低,關(guān)閉LED0GPIOPin
7、Write(GPIO_PORTF_BASE,GPIO_PIN_2,0xff); /PF2輸出高,點(diǎn)亮LED2SysCtlDelay(100*(10000000/3000); /延時n*1msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0); /PF2輸出低,點(diǎn)亮LED2GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0xff);/PF2輸出高,點(diǎn)亮LED2SysCtlDelay(100*(10000000/3000); /延時n*1msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0);/PF
8、2輸出低,點(diǎn)亮LED2;2.實(shí)驗(yàn)現(xiàn)象:主板上LED0,LED1,LED2按照間隔時間順序依次點(diǎn)亮實(shí)驗(yàn)原理解讀:主要利用延遲函數(shù),按順序點(diǎn)亮和關(guān)斷LED1,LED2,LED3。 五實(shí)驗(yàn)中遇到的問題及其解決方法首先是沒有按默認(rèn)路徑安裝,然后配置一直不對,缺少文件,后來把軟件卸載之后再重新安裝在默認(rèn)路徑,問題就解決了。實(shí)驗(yàn)二矩陣按鍵操作實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.熟悉和掌握矩陣式鍵盤的工作原理、電路設(shè)計和軟件編程方法。2.熟悉和掌握矩陣式鍵盤的行列掃描法。3.掌握鍵盤延時消抖的軟件方法。二、實(shí)驗(yàn)過程(包括流程圖)圖 2-1 實(shí)驗(yàn)程序流程圖三、實(shí)驗(yàn)代碼、注釋(最好每條注釋)及現(xiàn)象volatile uint32
9、_t ui32Loop; /定義變量volatile uint32_t key; /定義變量void delay()int ui32Loop0;for(ui32Loop0=0;ui32Loop0<1000;ui32Loop0+) /delay ; /通過循環(huán)跑空函數(shù)延遲int identify_key()key=0; /*a row is setted 0000 0111(PD1 PH3 PH2 PM3)GPIO_PORTD_AHB_DATA_R = 0x00; /PD1 PD0 is setted 0GPIO_PORTH_AHB_DATA_R = 0x0c; /PH2 PH3 is s
10、etted 1GPIO_PORTM_DATA_R = 0x08; / PM3 is setted 1for(ui32Loop=0;ui32Loop<1000;ui32Loop+) /delay; if(GPIO_PORTP_DATA_R&0x04)=0x00)/&&(GPIO_PORTP_DATA_R=0x04) delay();/eliminate buffeting if(GPIO_PORTP_DATA_R&0x04)=0x00) /PP2 is setted 0 ? key=1;/0key return 0; else if(GPIO_PORTN_D
11、ATA_R&0x08)=0x00)/PN3 is setted 0 ? delay(); if(GPIO_PORTN_DATA_R&0x08)=0x00) key=5;/4key return 0; else if(GPIO_PORTN_DATA_R&0x04)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00) key=9;/8key return 0; else if(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTD_AHB_DATA_R&am
12、p;0x01)=0x00) key=13;/12key return 0; /*a row is setted 0000 1011(PD1 PH3 PH2 PM3)GPIO_PORTD_AHB_DATA_R = 0x02;GPIO_PORTH_AHB_DATA_R = 0x04;GPIO_PORTM_DATA_R = 0x08; for(ui32Loop=0;ui32Loop<1000;ui32Loop+);if(GPIO_PORTP_DATA_R&0x04)=0x00)/&&(GPIO_PORTP_DATA_R=0x04) delay(); if(GPIO_PO
13、RTP_DATA_R&0x04)=0x00) key=2;/1key return 0; else if(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x08)=0x00) key=6;/5key return 0; else if(GPIO_PORTN_DATA_R&0x04)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00) key=10;/9key return 0; else if(GPIO_PORTD_AHB_DATA_R&
14、amp;0x01)=0x00) delay(); if(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=14;/13key return 0; /*a row is setted 0000 1101(PD1 PH3 PH2 PM3)GPIO_PORTD_AHB_DATA_R = 0x02;GPIO_PORTH_AHB_DATA_R = 0x08;GPIO_PORTM_DATA_R = 0x08;for(ui32Loop=0;ui32Loop<1000;ui32Loop+);if(GPIO_PORTP_DATA_R&0x04)=0x00)/&am
15、p;&(GPIO_PORTP_DATA_R=0x04) delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00) key=3; /2key return 0; else if(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x08)=0x00) key=7; /6key return 0; else if(GPIO_PORTN_DATA_R&0x04)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00)
16、key=11; /10key return 0; else if(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=15; /14key return 0; /*a row is setted 0000 1110(PD1 PH3 PH2 PM3)GPIO_PORTD_AHB_DATA_R = 0x02;GPIO_PORTH_AHB_DATA_R = 0x0c;GPIO_PORTM_DATA_R = 0x00;for(ui32Loop=0;ui32Loop<
17、1000;ui32Loop+);if(GPIO_PORTP_DATA_R&0x04)=0x00)/&&(GPIO_PORTP_DATA_R=0x04) delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00) key=4; /3key return 0; else if(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x08)=0x00) key=8; /7key return 0; else if(GPIO_PORTN_DATA_R&0x
18、04)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00) key=12; /11key return 0; else if(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=16; /15key return 0; return 1;intmain(void)SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);/使能 GPIOF 口GPIODirModeSet(GPIO_P
19、ORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,GPIO_DIR_MODE_OUT); /設(shè)置為輸出模式GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD); /進(jìn)一步設(shè)置為 8mA、帶轉(zhuǎn)換速率控制的推挽輸出 SysCtlClockFreqSet(SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 10000000); /設(shè)置系統(tǒng)時間為10MHZ
20、/ Enable the GPIO port that is used for the on-board LED.SYSCTL_RCGCGPIO_R |= (SYSCTL_RCGCGPIO_R13 | SYSCTL_RCGCGPIO_R12 | SYSCTL_RCGCGPIO_R11 |SYSCTL_RCGCGPIO_R10| SYSCTL_RCGCGPIO_R7 |SYSCTL_RCGCGPIO_R3 );/ / Enable the GPIO pin for the LED PN0,PN1,PN2,PN3,PP2,PF0,PF4. Set the direction as output./
21、 Enable the GPIO pin for the LED PM3,PH2,PH3. Set the direction as input.and / enable the GPIO pin for digital function.GPIO_PORTN_DIR_R = 0x03;GPIO_PORTM_DIR_R = 0x28;GPIO_PORTH_AHB_DIR_R = 0x0c;GPIO_PORTP_DIR_R = 0x00;GPIO_PORTD_AHB_DIR_R = 0x02;/GPIO_PORTF_AHB_DIR_R = 0x11;GPIO_PORTL_DIR_R = 0x0f
22、;GPIO_PORTN_DEN_R = 0x0f;GPIO_PORTM_DEN_R = 0x28;GPIO_PORTH_AHB_DEN_R = 0x0c;GPIO_PORTP_DEN_R = 0x04;GPIO_PORTD_AHB_DEN_R = 0x03;GPIO_PORTL_DEN_R = 0x0f;/GPIO_PORTF_AHB_DEN_R = 0x11;/ROW1_IN->PM3 ,ROW2_IN-> PH2 ,ROW3_IN-> PH3, /COL1_IN ->PN2, COL2_IN ->PN3,COL3_IN-> PP2/set the col
23、umn low lever and read the rowwhile(1)int a;identify_key();a=key;switch(a) /根據(jù)選中的按鍵點(diǎn)亮對應(yīng)的燈case 1 : GPIO_PORTL_DATA_R = 0x01;GPIO_PORTM_DATA_R|=0x20; /拉響蜂鳴器break;case 2 : GPIO_PORTL_DATA_R = 0x02;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 3 : GPIO_PORTL_DATA_R = 0x03; GPIOPinWrite(GPIO_
24、PORTM_BASE,GPIO_PIN_5,0xff); break;case 4 : GPIO_PORTL_DATA_R = 0x04;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 5 : GPIO_PORTL_DATA_R = 0x05;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 6 : GPIO_PORTL_DATA_R = 0x06;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case
25、 7: GPIO_PORTL_DATA_R = 0x07;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 8 : GPIO_PORTL_DATA_R = 0x08;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 9 : GPIO_PORTL_DATA_R = 0x09;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 10 : GPIO_PORTL_DATA_R = 0x0a;GPIOPinWr
26、ite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 11 : GPIO_PORTL_DATA_R = 0x0b;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 12 : GPIO_PORTL_DATA_R = 0x0c; GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 13 : GPIO_PORTL_DATA_R = 0x0d;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff
27、); break;case 14 : GPIO_PORTL_DATA_R = 0x0e;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 15 : GPIO_PORTL_DATA_R = 0x0f;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;case 16 : GPIO_PORTL_DATA_R = 0x00;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff); break;default: GPIO_PORTN_DATA_R
28、= 0x00;GPIO_PORTM_DATA_R&=0xdf;實(shí)驗(yàn)結(jié)果:按下鍵盤 對應(yīng)的二進(jìn)制燈點(diǎn)亮,并且蜂鳴器也會響。四.思考題1.代碼 #include <stdint.h>#include "inc/tm4c1294ncpdt.h"volatile uint32_t ui32Loop; /定義變量volatile uint32_t key; /定義變量void delay()int ui32Loop0;for(ui32Loop0=0;ui32Loop0<1000;ui32Loop0+) /delay;int identify_key()key
29、=0;GPIO_PORTD_AHB_DATA_R = 0x01;GPIO_PORTH_AHB_DATA_R = 0x0c;GPIO_PORTM_DATA_R = 0x08;delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) key=1; return 0; else if(GPIO_PORT
30、N_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=2; return 0; GPIO_PORTD_AHB_DATA_R = 0x03; GPIO_PORTH_AHB_DATA_R = 0x04; GPIO_PORTM_DATA_R = 0x08; delay(); if(GPIO_PORTP_DATA_R&
31、amp;0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) key=3; return 0; else if(GPIO_PORTN_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x0
32、0)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=4; return 0; GPIO_PORTD_AHB_DATA_R = 0x03; GPIO_PORTH_AHB_DATA_R = 0x08; GPIO_PORTM_DATA_R = 0x08; delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(
33、GPIO_PORTN_DATA_R&0x08)=0x00) key=5; return 0; else if(GPIO_PORTN_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=6; return 0; GPIO_PORTD_AHB_DATA_R = 0x03; GPIO_PORTH_AHB_DAT
34、A_R = 0x0c; GPIO_PORTM_DATA_R = 0x00; delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) delay(); if(GPIO_PORTP_DATA_R&0x04)=0x00)&&(GPIO_PORTN_DATA_R&0x08)=0x00) key=7; return 0; else if(GPIO_PORTN_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) delay(); if(GPIO_PORTN_DATA_R&0x04)=0x00)&&(GPIO_PORTD_AHB_DATA_R&0x01)=0x00) key=8; return 0; return 1; intmain(void) SYSCTL_RCGCGPIO_R |= (SYSCTL_RCGCGPIO_R13 | SYSCTL_RCGCGPIO_R12 | SYSCT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球開放式框架工業(yè)顯示器行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國平盤電滑環(huán)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球TGV基板行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國完全生物基聚酰胺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 幼兒繪本講述與演繹幼兒繪本講述的停連運(yùn)用技巧講解
- 2025景區(qū)商場蛇年新春嘉年華活動策劃方案
- 2025綠洲集團(tuán)工程合同管理規(guī)范
- 沙石采購合同范本工程合同
- 2025【合同范本】打印機(jī)耗材長期供貨合同
- 防雷技術(shù)服務(wù)合同
- 第2課+古代希臘羅馬(教學(xué)設(shè)計)-【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 中儲糧蘭州公司考試筆試題庫
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報告
- 重建成長型思維課件
- 電捕焦油器火災(zāi)爆炸事故分析
- 質(zhì)量問題分析及措施報告
- 汽修廠安全風(fēng)險分級管控清單
- 現(xiàn)代通信原理與技術(shù)(第五版)PPT全套完整教學(xué)課件
- 病例展示(皮膚科)
- DB31T 685-2019 養(yǎng)老機(jī)構(gòu)設(shè)施與服務(wù)要求
- 燕子山風(fēng)電場項(xiàng)目安全預(yù)評價報告
評論
0/150
提交評論