请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:EK-TM4C1294XL 工具/软件:Code Composer Studio
我正在尝试设置高水平的GPIO中断触发,以检测键盘按钮按下情况。 我正在使用EK-TM4C1294XL。 所有具有8个引脚的端口都用于其他用途。 下面包含一个代码片段。 我在做什么错了,但我没有看到。 调试器在initKeypad函数中未超过"GPIOIntTypeSet(rowPort, KEYARD_ROUs, GPIO _HIGH _LEV)"行。
//
包含
//
#include <stdbool.h>
#include <stdint.h>
#include <maty.h>
#include "inc/tm4c1294ncpdt.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_types.h"#gp_pb_pidrav_pit/pin
#define #"trp_p_p_pidraver/p_p_pidrb_p_plin/p_pline.h/"#define #cret/or_p_p_p_plin_p_p_plinb_p_plinb_p_p_/pline.h/plin/p_/plinbidraver/p_p_/p_/p_/plinbidr.h/#define #"
包含#p_p_plin_p_p_
#define KEYPROD_ROW_1 GPIO_PIN_1 //以4开头的行。
#define KEYTOD_ROW_2 GPIO_PIN_2 //以7开头的行。
#define键盘行_3 gPIO_PIN_3 //以P(*)开头的行。
#define KEYCOL_ROW_0|KEYCOL_ROW_1|KEYCOL_ROW_1|KEYCOG_ROW_2|KEYPAGE_3)#define
KEYCOL_0 GPIO_PIN_4 //以1开头的列。
#define KEYCOL_1 GPIO_PIN_5 //以2开头的列。
#define KEYCOL_2 GPIO_PIN_6 //以3开头的列。
#define KEYCOL_3 GPIO_PIN_7 //以H (A)开头的列。
端口#define key_cols (keykeying_COL_0|keykeykeying_COL_1|keykeykeying_COL_2|keykeykeykeying_COL_3)#define keyypadRow 4 ////全局常数/变量////常量//常量//常量//常量//常量//常量// const uint8_t键[keypadcol][keypadCoL][ke'3'={'0'3',变量'0'3',变量/'3'3'3',变量/'3'3'3'3','3'3'3',变量/'3'3'3'3',',变量/'3'3'3'3'3',',变量
//布尔值
//
布尔值new_key_pressed = FALSE;
////
函数端口类型定义
//
initKeypad (UINT32_t rowPort,UINT32_t colPort);
void keyPressISR(void);
////
主程序
//
void main (void)
{//
//使用外部25MHz精密振荡器生成120MHz系统
//使用PLL时钟
//
SysctlMOSCConfigSet(sysctl_MOSC_HIGBHFREQ);
SYS_CLK_ACT = SysCltlClockFreqSet(sysctl_XTAL_25MHz| sysctl_OSC主| sysctl_use_PLL |
sysctl_CFG_VCO_480,SYS_CLK_REQ);
//
//启用外围设备
//
SysCtlPeripheralEnable(sysctl_Periph_GPIoc);
SysCtlalEnable(sysctl_Periph_GPIOP);
//
//启用GPIO AHB
//
SysCl GPIOHBEnable(sysctl_Periph_GPIO);////
初始化键盘接口
//
初始化键盘接口// initKeypad (PORTP,PORTC);
同时(1){////
//循环代码
//
}
无效键盘(UINT32_t rowPort, UINT32_t colPort){//
//配置GPIO类型
//
//输出
//
GPIOPinTypeGPIOOutput (colPort,键盘卷);
//输入
//
GPIOPinTypeGPIOInput (行端口,键盘行);
//
//设置GPIO方向
//
//输出
//
GPIODIRModeSet (colPort,键盘卷,GPIO _DIR_MODE_OUT);
//输入
//
GPIODIRModeSet (rowPort,键盘行,GPIO _DIR_MODE_In);
//
//配置GPIO键盘属性
//
//标准
//
GPIOPadConfigSet (colPort,键盘卷,gpio_strength,2mA,gpio_PIN_type_STD);
GPIOPadConfigSet (rowPort,keying_rows,gpio_stritnity_2mA,gpio_pin_type_STD);
//
//配置GPIO中断
//
GPIOIntTypeSet (rowPort,keykey_rows,gpio_high级别);
GPIOIntRegister (rowPort,keyPressISR);
GPIOIntEnable (rowPort,键盘行);
GPIOPinWrite (colPort,键盘卷,键盘卷); //打开每个列
keypresse_row_port = rowPort;
keypression_colport = colPort;
}
void keyPressISR(void)
{
last_key_pressed = checkKeypad();//轮询键盘
new_key_pressed = true;
GPIOPinWrite(keying_port_port_port, keykeypresse_cols);
键盘_colar(keypress_col_car) 键盘行);
}