This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/EK-TM4C1294XL:GPIO中断未编译

Guru**** 2581345 points
Other Parts Discussed in Thread: EK-TM4C1294XL

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/600301/ccs-ek-tm4c1294xl-gpio-interrupts-not-compiling

部件号: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) 键盘行);

} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    调试 器在initKeypad函数中未超过"GPIOIntTypeSet(rowPort, KEYARD_ROWs, GPIO _HIGH _LEV)"行。

    initKeypad 函数设置KEYARD_ROW_PORT和KEYARD_COL_PORT变量*after *启用GPIO中断。 如果在 设置KEYCARD_ROW_PORT和KEYCARD_COL_PORT之前发生中断,由于  KEYCARD_COL_PORT不是有效的GPIO端口,keyPressISR()可能会在GPIOPinWrite(PKEYTE_COL_PORT,KEYCARD_COLs,KEYCARD_COL_PORT;语句上生成硬故障。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已将GPIOIntEnable移至下面的KEYCOL_PORT。 仍然不工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    调试 器未通过initKeypad函数中的"GPIOIntTypeSet (rowPort,键盘行,gPIO_HIGH级别)"行。

    调试器未能超越 GPIOIntTypeSet (rowPort,键盘行,gPIO_HIGH级别);语句暂停程序(如果进入ALT + F8)并检查ALT程序)。 如果是,请使用 StellarisRegistered微处理器中的诊断软件故障 来确定原因。

    仅仅看一下代码我看不出问题,因此建议暂停程序以调查状态。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的帮助。 因为某种原因我不知道为什么,它停止了在这个功能上的悬停。 下次执行程序时,我会记住诊断步骤。