单片机第一次实验.doc_第1页
单片机第一次实验.doc_第2页
单片机第一次实验.doc_第3页
单片机第一次实验.doc_第4页
单片机第一次实验.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Cortex-M4原理与实践实验报告实验一 GPIO 接口实验一.实验目的1. 掌握 Code Composer Studio 6.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.hint main(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_D1 on 简单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.hint main(void) SysCtlClockFreqSet(SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 10000000); /设置系统时间为10MHZSysCtlPeripheralEnable(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输出高,点亮LED0SysCtlDelay(100*(10000000/3000); /延时n*1ms 100msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0); /PF1输出低,关闭LED0GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0xff); /PF2输出高,点亮LED2SysCtlDelay(100*(10000000/3000); /延时n*1msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0); /PF2输出低,点亮LED2GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0xff);/PF2输出高,点亮LED2SysCtlDelay(100*(10000000/3000); /延时n*1msGPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0);/PF2输出低,点亮LED2;2.实验现象:主板上LED0,LED1,LED2按照间隔时间顺序依次点亮实验原理解读:主要利用延迟函数,按顺序点亮和关断LED1,LED2,LED3。 五实验中遇到的问题及其解决方法首先是没有按默认路径安装,然后配置一直不对,缺少文件,后来把软件卸载之后再重新安装在默认路径,问题就解决了。实验二矩阵按键操作实验一、实验目的1.熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程方法。2.熟悉和掌握矩阵式键盘的行列扫描法。3.掌握键盘延时消抖的软件方法。二、实验过程(包括流程图)图 2-1 实验程序流程图三、实验代码、注释(最好每条注释)及现象volatile uint32_t ui32Loop; /定义变量volatile uint32_t key; /定义变量void delay()int ui32Loop0;for(ui32Loop0=0;ui32Loop01000;ui32Loop0+) /delay ; /通过循环跑空函数延迟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 setted 1GPIO_PORTM_DATA_R = 0x08; / PM3 is setted 1for(ui32Loop=0;ui32Loop1000;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_DATA_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&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;ui32Loop1000;ui32Loop+);if(GPIO_PORTP_DATA_R&0x04)=0x00)/&(GPIO_PORTP_DATA_R=0x04) delay(); if(GPIO_PORTP_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&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;ui32Loop1000;ui32Loop+);if(GPIO_PORTP_DATA_R&0x04)=0x00)/&(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) 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;ui32LoopPM3 ,ROW2_IN- PH2 ,ROW3_IN- PH3, /COL1_IN -PN2, COL2_IN -PN3,COL3_IN- PP2/set the column low lever and read the rowwhile(1)int a;identify_key();a=key;switch(a) /根据选中的按键点亮对应的灯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_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 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;GPIOPinWrite(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); 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 = 0x00;GPIO_PORTM_DATA_R&=0xdf;实验结果:按下键盘 对应的二进制灯点亮,并且蜂鸣器也会响。四.思考题1.代码 #include #include inc/tm4c1294ncpdt.hvolatile uint32_t ui32Loop; /定义变量volatile uint32_t key; /定义变量void delay()int ui32Loop0;for(ui32Loop0=0;ui32Loop01000;ui32Loop0+) /delay;int identify_key()key=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_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=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&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)=0x00)&(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)&(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_DATA_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 | SYSCTL_RCGCGPIO_R11 |SYSCTL_RCGCGPIO_R10| SYSCTL_RCGCGPIO_R7 |SYSCTL_RCGCGPIO_R3 );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_PORTL_DIR_R = 0x0f;GPIO_P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论