




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Cortex-M4原理與實(shí)踐實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一 GPIO 接口實(shí)驗(yàn)一.實(shí)驗(yàn)?zāi)康?. 掌握 Code Composer Studio 6.0(以下簡(jiǎn)稱(chēng) CCS)的安裝和配置步驟過(guò)程。2. 了解 Cortex-M4 開(kāi)發(fā)系統(tǒng)和計(jì)算機(jī)與目標(biāo)系統(tǒng)的連接方法。3. 了解 CCS 軟件的操作環(huán)境和基本功能,了解 TM4C1294 軟件開(kāi)發(fā)過(guò)程。1) 學(xué)習(xí)創(chuàng)建工程和管理工程的方法;2) 了解基本的編譯和調(diào)試功能;3) 學(xué)會(huì)設(shè)置斷點(diǎn),注入和提取數(shù)據(jù)文件;4) 學(xué)習(xí)使用觀察窗口;5) 了解圖形功能的使用方法。二實(shí)驗(yàn)程序流程圖 本實(shí)驗(yàn)通過(guò)多種方法來(lái)控制 GPIO 端口的讀寫(xiě),通過(guò) GPIO 端口的讀寫(xiě)來(lái)控制主板上兩
2、個(gè)獨(dú)立的 LED 燈,D1、D2 的點(diǎn)亮和熄滅。主板上 D1、D2 、D3 對(duì)應(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 簡(jiǎn)單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)時(shí)間為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); /延時(shí)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); /延時(shí)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); /延時(shí)n*1msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0);/PF
8、2輸出低,點(diǎn)亮LED2;2.實(shí)驗(yàn)現(xiàn)象:主板上LED0,LED1,LED2按照間隔時(shí)間順序依次點(diǎn)亮實(shí)驗(yàn)原理解讀:主要利用延遲函數(shù),按順序點(diǎn)亮和關(guān)斷LED1,LED2,LED3。 五實(shí)驗(yàn)中遇到的問(wèn)題及其解決方法首先是沒(méi)有按默認(rèn)路徑安裝,然后配置一直不對(duì),缺少文件,后來(lái)把軟件卸載之后再重新安裝在默認(rèn)路徑,問(wèn)題就解決了。實(shí)驗(yàn)二矩陣按鍵操作實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.熟悉和掌握矩陣式鍵盤(pán)的工作原理、電路設(shè)計(jì)和軟件編程方法。2.熟悉和掌握矩陣式鍵盤(pán)的行列掃描法。3.掌握鍵盤(pán)延時(shí)消抖的軟件方法。二、實(shí)驗(yàn)過(guò)程(包括流程圖)圖 2-1 實(shí)驗(yàn)程序流程圖三、實(shí)驗(yàn)代碼、注釋?zhuān)ㄗ詈妹織l注釋?zhuān)┘艾F(xiàn)象volatile uint32
9、_t ui32Loop; /定義變量volatile uint32_t key; /定義變量void delay()int ui32Loop0;for(ui32Loop0=0;ui32Loop0<1000;ui32Loop0+) /delay ; /通過(guò)循環(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)時(shí)間為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)亮對(duì)應(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é)果:按下鍵盤(pán) 對(duì)應(yīng)的二進(jìn)制燈點(diǎn)亮,并且蜂鳴器也會(huì)響。四.思考題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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市水環(huán)管理的綜合性研究計(jì)劃
- 制定產(chǎn)品研發(fā)路徑圖計(jì)劃
- 營(yíng)造積極班級(jí)氛圍的方法計(jì)劃
- 新生適應(yīng)性教育工作計(jì)劃
- 2025年修改離婚協(xié)議模板
- 2025年智能燃?xì)獗砗献鲄f(xié)議書(shū)
- 2025年廠房租賃合同模板集錦十篇
- 三年級(jí)下冊(cè)數(shù)學(xué)教案-4.1 旋轉(zhuǎn)和平移現(xiàn)象 ︳西師大版
- 三年級(jí)上冊(cè)數(shù)學(xué)教案-4.5乘與除 練習(xí)三-北師大版
- 2025年合肥貨運(yùn)資格證考試中心
- 2025年內(nèi)蒙古交通職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 河南2025年河南職業(yè)技術(shù)學(xué)院招聘30人筆試歷年參考題庫(kù)附帶答案詳解
- 急診危重癥患者轉(zhuǎn)運(yùn)專(zhuān)家共識(shí)解讀課件
- 《混凝土預(yù)制構(gòu)件出廠驗(yàn)收標(biāo)準(zhǔn)》
- 2025年數(shù)字安徽有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- 2025年江蘇省無(wú)錫市江南大學(xué)專(zhuān)職輔導(dǎo)員招聘45人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《拆除工程施工安全》課件
- 2024版智能物流倉(cāng)儲(chǔ)管理系統(tǒng)采購(gòu)與運(yùn)維服務(wù)合同3篇
- 金融風(fēng)險(xiǎn)細(xì)則解讀
- IATF16949:2024標(biāo)準(zhǔn)質(zhì)量手冊(cè)
- 2024年包頭鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
評(píng)論
0/150
提交評(píng)論