一个简单的程序,就是将PD7口作为按键输入,来检测按键,但是程序在调试的过程中一直是无法进入按键扫描程序,就是不管我有没有按下按就是一直认为按键没按下,并且在检测相应的IO管脚时,的确有电平的变化。程序如下:
#include "hw_memmap.h"//关于存储地址映射的头文件,比如对输入输出口的宏定义
#include "hw_ints.h" //关于中断任务的头文件,总共64个中断,分别对应不同的中断
//这个头文件就是对不同的中断向量进行宏定义
#include "hw_types.h"//一些常量和宏的定义
#include "interrupt.h"//关于中断的一些初始化,中断寄存器的配置等函数的声明
#include "gpio.h"//有关IO口的驱动库
#include "sysctl.h"//有关系统控制的驱动库
#include "Systick.h"//关于系统时钟的驱动
#include "Timer.h"//定时器的驱动库
#include "adc.h"//ADC的驱动库
#include "Pwm.h"//PWM的驱动库
#include "Type.h"//数据类型的宏定义
/************************************************************
对LM3S9B92管脚宏定义到LED
*************************************************************/
#define SECOND 100
#define SHAKE 10
#define KEY GPIO_PIN_7
#define COM 0
#define DATA 1
#define D (GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7)
unsigned char firstline[] = "Current Time";
/***********************************************************
函数名称:void GPIOE_Configuration(void)
函数功能:对GPIOE进行初始化
函数参数:None
函数返回值:None
***********************************************************/
int hour = 0,min = 0,sec = 0;
int y = 0;
/***********************************************************
函数名称:void timeDelay (unsigned long ulVal)
函数功能:微秒延时,延时量为ulVal
函数参数:ulVal
函数返回值:None
***********************************************************/
void delay(long int z)
{
while(z--);
}
/***********************************************************
函数名称:void main()
函数功能:实现1602显示
函数参数:None
函数返回值:None
***********************************************************/
void main()
{
SysCtlLDOSet(SYSCTL_LDO_2_50V);
/*配置器件的时钟,输入晶振的率为16MHz使用的振荡器为外部晶振,选择PLL为系统
时钟源,对外部振荡器*/;
SysCtlClockSet( SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ );
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIODirModeSet(GPIO_PORTD_BASE,KEY,GPIO_DIR_MODE_IN);
if (GPIOPinRead(GPIO_PORTD_BASE,KEY))
{
delay(SHAKE);
if(GPIOPinRead(GPIO_PORTD_BASE,KEY))
{
while(GPIOPinRead(GPIO_PORTD_BASE,KEY));
sec = 0;
}
}
}
注:用万用表测得当IO口设置成输入模式时,默认为低电平,当按键按下相应IO就直接接到了VDD(3.3V),而我测得按下后,PD7的确也是3.3V,但就是无法进入if语句,调试的时候直接就跳到了程序末尾。
麻烦哪位高人指点,本人不胜感激
[
本帖最后由 剑气书香 于 2012-6-22 15:17 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>