单片机第一次实验.docx

上传人:b****2 文档编号:11409812 上传时间:2023-05-31 格式:DOCX 页数:28 大小:2.46MB
下载 相关 举报
单片机第一次实验.docx_第1页
第1页 / 共28页
单片机第一次实验.docx_第2页
第2页 / 共28页
单片机第一次实验.docx_第3页
第3页 / 共28页
单片机第一次实验.docx_第4页
第4页 / 共28页
单片机第一次实验.docx_第5页
第5页 / 共28页
单片机第一次实验.docx_第6页
第6页 / 共28页
单片机第一次实验.docx_第7页
第7页 / 共28页
单片机第一次实验.docx_第8页
第8页 / 共28页
单片机第一次实验.docx_第9页
第9页 / 共28页
单片机第一次实验.docx_第10页
第10页 / 共28页
单片机第一次实验.docx_第11页
第11页 / 共28页
单片机第一次实验.docx_第12页
第12页 / 共28页
单片机第一次实验.docx_第13页
第13页 / 共28页
单片机第一次实验.docx_第14页
第14页 / 共28页
单片机第一次实验.docx_第15页
第15页 / 共28页
单片机第一次实验.docx_第16页
第16页 / 共28页
单片机第一次实验.docx_第17页
第17页 / 共28页
单片机第一次实验.docx_第18页
第18页 / 共28页
单片机第一次实验.docx_第19页
第19页 / 共28页
单片机第一次实验.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机第一次实验.docx

《单片机第一次实验.docx》由会员分享,可在线阅读,更多相关《单片机第一次实验.docx(28页珍藏版)》请在冰点文库上搜索。

单片机第一次实验.docx

单片机第一次实验

 

Cortex-M4原理与实践实验报告

 

实验一GPIO接口实验

一.实验目的

1.掌握CodeComposerStudio6.0(以下简称CCS)的安装和配置步骤过程。

2.了解Cortex-M4开发系统和计算机与目标系统的连接方法。

3.了解CCS软件的操作环境和基本功能,了解TM4C1294软件开发过程。

1)学习创建工程和管理工程的方法;

2)了解基本的编译和调试功能;

3)学会设置断点,注入和提取数据文件;

4)学习使用观察窗口;

5)了解图形功能的使用方法。

二.实验程序流程图

 

本实验通过多种方法来控制GPIO端口的读写,通过GPIO端口的读写来控制主板上两个独立的LED灯,D1、D2的点亮和熄灭。

主板上D1、D2、D3对应的GPIO口分别为PF1、PF2、PF3。

三.实验代码、注释及现象

#include

#include

#include"inc/hw_memmap.h"

#include"inc/hw_types.h"

#include"driverlib/pin_map.h"

#include"driverlib/sysctl.h"

#include"driverlib/gpio.h"

intmain(void)

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能GPIOF口

GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT);//设置为输出模式

GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD);

//进一步设置为8mA、带转换速率控制的推挽输出

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xff);//PF1输出高电平

while

(1)

{};//LED_D1on简单LE

}

现象:

LED1被点亮

四.思考题

1.代码

#include

#include

#include"inc/hw_memmap.h"

#include"inc/hw_types.h"

#include"driverlib/pin_map.h"

#include"driverlib/sysctl.h"

#include"driverlib/gpio.h"

intmain(void)

{

SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ|

SYSCTL_OSC_MAIN|

SYSCTL_USE_PLL|

SYSCTL_CFG_VCO_480),10000000);//设置系统时间为10MHZ

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能GPIOF口

GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_DIR_MODE_OUT);//设置为输出模式

GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD);//进一步设置为8mA、带转换速率控制的推挽输出

 

while

(1)

{

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xff);//PF1输出高,点亮LED0

SysCtlDelay(100*(10000000/3000));//延时n*1ms100ms

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0);//PF1输出低,关闭LED0

 

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0xff);//PF2输出高,点亮LED2

SysCtlDelay(100*(10000000/3000));//延时n*1ms

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0);//PF2输出低,点亮LED2

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0xff);//PF2输出高,点亮LED2

SysCtlDelay(100*(10000000/3000));//延时n*1ms

GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0);//PF2输出低,点亮LED2

};

 

}

2.实验现象:

主板上LED0,LED1,LED2按照间隔时间顺序依次点亮

实验原理解读:

主要利用延迟函数,按顺序点亮和关断LED1,LED2,LED3。

五.实验中遇到的问题及其解决方法

首先是没有按默认路径安装,然后配置一直不对,缺少文件,后来把软件卸载之后再重新安装在默认路径,问题就解决了。

实验二矩阵按键操作实验

一、实验目的

1.熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程方法。

2.熟悉和掌握矩阵式键盘的行列扫描法。

3.掌握键盘延时消抖的软件方法。

二、实验过程(包括流程图)

 

图2-1实验程序流程图

 

三、实验代码、注释(最好每条注释)及现象

volatileuint32_tui32Loop;//定义变量

volatileuint32_tkey;//定义变量

voiddelay()

{

intui32Loop0;

for(ui32Loop0=0;ui32Loop0<1000;ui32Loop0++)//delay

{;}

}//通过循环跑空函数延迟

intidentify_key()

{

key=0;

//***********************arowissetted00000111(PD1PH3PH2PM3)

GPIO_PORTD_AHB_DATA_R=0x00;//PD1PD0issetted0

GPIO_PORTH_AHB_DATA_R=0x0c;//PH2PH3issetted1

GPIO_PORTM_DATA_R=0x08;//PM3issetted1

for(ui32Loop=0;ui32Loop<1000;ui32Loop++)//delay

{

;

}

if((GPIO_PORTP_DATA_R&0x04)==0x00)//&&(GPIO_PORTP_DATA_R==0x04)

{

delay();//eliminatebuffeting

if((GPIO_PORTP_DATA_R&0x04)==0x00)//PP2issetted0?

{

key=1;//0key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x08)==0x00)//PN3issetted0?

{

delay();

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

key=5;//4key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

key=9;//8key

return0;

}

}

else

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

delay();

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

key=13;//12key

return0;

}

}

//***********************arowissetted00001011(PD1PH3PH2PM3)

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_PORTP_DATA_R&0x04)==0x00)

{

key=2;//1key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

key=6;//5key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

key=10;//9key

return0;

}

}

else

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

delay();

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

key=14;//13key

return0;

}

}

//***********************arowissetted00001101(PD1PH3PH2PM3)

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)//&&(GPIO_PORTP_DATA_R==0x04)

{

delay();

if((GPIO_PORTP_DATA_R&0x04)==0x00)

{

key=3;//2key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

key=7;//6key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

key=11;//10key

return0;

}

}

else

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

delay();

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

key=15;//14key

return0;

}

}

//***********************arowissetted00001110(PD1PH3PH2PM3)

GPIO_PORTD_AHB_DATA_R=0x02;

GPIO_PORTH_AHB_DATA_R=0x0c;

GPIO_PORTM_DATA_R=0x00;

for(ui32Loop=0;ui32Loop<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

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x08)==0x00)

{

key=8;//7key

return0;

}

}

else

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

delay();

if((GPIO_PORTN_DATA_R&0x04)==0x00)

{

key=12;//11key

return0;

}

}

else

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

delay();

if((GPIO_PORTD_AHB_DATA_R&0x01)==0x00)

{

key=16;//15key

return0;

}

}

return1;

}

int

main(void)

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能GPIOF口

GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,GPIO_DIR_MODE_OUT);////设置为输出模式

GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD);/////进一步设置为8mA、带转换速率控制的推挽输出

SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ|

SYSCTL_OSC_MAIN|

SYSCTL_USE_PLL|

SYSCTL_CFG_VCO_480),10000000);//设置系统时间为10MHZ

//EnabletheGPIOportthatisusedfortheon-boardLED.

SYSCTL_RCGCGPIO_R|=(SYSCTL_RCGCGPIO_R13|SYSCTL_RCGCGPIO_R12|SYSCTL_RCGCGPIO_R11|SYSCTL_RCGCGPIO_R10|SYSCTL_RCGCGPIO_R7|SYSCTL_RCGCGPIO_R3);//

/////

//EnabletheGPIOpinfortheLEDPN0,PN1,PN2,PN3,PP2,PF0,PF4.Setthedirectionasoutput.

//EnabletheGPIOpinfortheLEDPM3,PH2,PH3.Setthedirectionasinput.and

//enabletheGPIOpinfordigitalfunction.

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;

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

//setthecolumnlowleverandreadtherow

while

(1)

{

inta;

identify_key();

a=key;

switch(a)//根据选中的按键点亮对应的灯

{

case1:

GPIO_PORTL_DATA_R=0x01;GPIO_PORTM_DATA_R|=0x20;//拉响蜂鸣器break;

case2:

GPIO_PORTL_DATA_R=0x02;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case3:

GPIO_PORTL_DATA_R=0x03;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case4:

GPIO_PORTL_DATA_R=0x04;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case5:

GPIO_PORTL_DATA_R=0x05;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case6:

GPIO_PORTL_DATA_R=0x06;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case7:

GPIO_PORTL_DATA_R=0x07;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case8:

GPIO_PORTL_DATA_R=0x08;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case9:

GPIO_PORTL_DATA_R=0x09;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case10:

GPIO_PORTL_DATA_R=0x0a;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case11:

GPIO_PORTL_DATA_R=0x0b;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case12:

GPIO_PORTL_DATA_R=0x0c;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case13:

GPIO_PORTL_DATA_R=0x0d;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case14:

GPIO_PORTL_DATA_R=0x0e;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case15:

GPIO_PORTL_DATA_R=0x0f;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

case16:

GPIO_PORTL_DATA_R=0x00;GPIOPinWrite(GPIO_PORTM_BASE,GPIO_PIN_5,0xff);break;

default:

GPIO_PORTN_DATA_R=0x00;GPIO_PORTM_DATA_R&=0xdf;

}

 

}

}

实验结果:

按下键盘对应的二进制灯点亮,并且蜂鸣器也会响。

四.思考题

1.代码

#include

#include"inc/tm4c1294ncpdt.h"

volatileuint32_tui32Loop;//定义变量

volatileuint32_tkey;//定义变量

voiddelay()

{

intui32Loop0;

for(ui32Loop0=0;ui32Loop0<1000;ui32Loop0++)//delay

{;}

}

intidentify_key()

{

key=0;

GPIO_PORTD_AHB_DATA_R=0x01;

GPIO_PORTH_AHB_DATA_R=0x0c;

GPIO_P

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2