單片機(jī)第一次實(shí)驗(yàn)_第1頁
單片機(jī)第一次實(shí)驗(yàn)_第2頁
單片機(jī)第一次實(shí)驗(yàn)_第3頁
單片機(jī)第一次實(shí)驗(yàn)_第4頁
單片機(jī)第一次實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論