主题:SysConfig 中讨论的其他器件
工具/软件:
您好:
使用构建系统: mcu_plus_sdk_am64x_10_01_00_32
下面详细介绍了不同路由器的中断分配错误问题:
使用示例:gpio_input_interrupt
引脚分配和路由器 7 到 GPIO1_43 引脚的中断:

和头文件 ti_drivers_config.h 中的结果:
/* GPIO PIN 宏*/
#define GPIO_Push_button_BASE_ADDR (CSL_GPIO1_BASE)
#define GPIO_PUSH_BUTLE_PIN (43)
#define GPIO_Push_Button_DIR (GPIO_DIRECTION_INPUT)
#define GPIO_Push_Button_TRIG_TYPE (GPIO_TRIG_TYPE_RISE_EDGE)
#define GPIO_Push_Button_INTR_NUM (CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_7)
和 Board_getGpioButtonIntrNum () 在 ti_drivers_config.c 中分配 如下:
uint32_t Board_getGpioButtonIntrNum (void)
{
返回 (Board_Button_GPIO_INTR_NUM);
}
其中 Board_Button_GPIO_INTR_NUM 定义为:
/*
*主板信息
*/
/*这基于 DMSC 板配置和内核*/
#define BOARD_BUTLE_GPIO_INTR_NUM (CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_7)
#define Board_BUTTON_GPIO_SWITCH_NUM (5)
请注意、已正确分配给 BUTTONT_GPIO_43 的相同中断号 (39U)
------------------------------------------------
除了将此示例移植到我的工程中时一切都正常、因为我的工程已经分配了另一个中断引脚、但尚未为此中断创建回调函数。 此中断标签为:prgm_INTn 到 GPIO1_7、路由器为 0、如下所示:
 
对于 GPIO1_47、路由器 7 的 GPIO_PUSH 按钮、示例中断保持不变:

因此、在工程构建之后、按钮 SW5 的中断 (GPIO1_43) 未注册、也无法正常工作
和进一步研究以下行的 gpio_input_interrupt.c:
PinNum = GPIO_Push_putton_pin;
IntrNum = Board_getGpioButtonIntrNum ();
buttonNum = Board_getGpioButtonSwitchNum ();
将导致 ti_drivers_config.h 中的定义:
#define GPIO_Push_button_BASE_ADDR (CSL_GPIO1_BASE)
#define GPIO_PUSH_BUTLE_PIN (43)
#define GPIO_Push_Button_DIR (GPIO_DIRECTION_INPUT)
#define GPIO_Push_Button_TRIG_TYPE (GPIO_TRIG_TYPE_RISE_EDGE)
#define GPIO_Push_Button_INTR_NUM (CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_7)
但是 Board_getGpioButtonIntrNum () 在 ti_drivers_config.c 中定义为:
uint32_t Board_getGpioButtonIntrNum (void)
{
返回 (Board_Button_GPIO_INTR_NUM);
}
Board_Button_GPIO_INTR_NUM 定义为:
/*这基于 DMSC 板配置和内核*/
#define BOARD_BUTLE_GPIO_INTR_NUM (CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_0)
#define Board_BUTTON_GPIO_SWITCH_NUM (5)
这是为 ti_drivers_config.h 中的 prgm_INTn 引脚定义的宏:
#define PRGM_INTN_BASE_ADDR (CSL_GPIO1_BASE)
#define PRGM_INTN_PIN (7)
#define PRGM_INTN_DIR (GPIO_DIRECTION_INPUT)
#define PRGM_INTN_TRIG_TYPE (GPIO_TRIG_TYPE_RISE_EDGE)
#define PRGM_INTN_INTR_NUM (CSLR_R5FSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_0)
因此、为什么中断路由器从另一个原始中断 prgm_INTn 错误地分配到 BUTLE_GPIO_43。 显然、两个中断的标签是不同的、并且没有相关性。
只有在 SysConfig 中删除了将 prgm_INTn 引脚分配为中断时、该问题才会消失。
 
				 
		 
					