LM3S9B92按键程序问题

2019-03-24 12:05发布

一个简单的程序,就是将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 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
Study_Stellaris
2019-03-25 04:29
加一个GPIOPadConfigSet(GPIO_PORTD_BASE,KEY,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
试试。

一周热门 更多>

相关问题

    相关文章