Part Number: MCU-PLUS-SDK-AM243X
Other Parts Discussed in Thread: SYSCONFIG
Tool/software:
On the Launchpad (LP-AM243x) I want to setup GPIO1_19 (ball G2 for ALX) as an input, with an interrupt on a rising edge.
In SYSCFG I set it up with the following:
| Name | GPIO_IRQ0 | ||
| PIN Direction | INPUT | ||
| Trigger Type | Rising Edge | ||
| Enable Interrupt Configuration | ✓ | ||
| Fetch Board Configuration | GET RM DATA | ||
| Interrupt ROuter Output | Router 7 | ||
| Use MCU Domain Peripherals | *left unchecked* | ||
| GPIO Peripheral | GPIO1 | ||
| Preferred Voltage | Any | ||
| Signals | Pins | PU/PD | RX |
| GPIO Pin (GPIO1_19) | PRG0_PRU0_GPO19/G2 | PD | ✓ |
I used the following API guide to try and setup - per pin - interrupts.
https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_01_00_36/exports/docs/api_guide_am64x/DRIVERS_GPIO_PAGE.html
The code from the above link:
static void GPIO_pinIsrFxn(void *args)
{
/*
* Handle pin interrupt - This is pulse interrupt. No need to clear status
*/
}
void gpio_pin_interrupt_init(void)
{
int32_t retVal;
uint32_t pinNum = gGpioPinNum, bankNum;
HwiP_Params hwiPrms;
bankNum = GPIO_GET_BANK_INDEX(pinNum);
/* Interrupt setup */
GPIO_setDirMode(gGpioBaseAddr, pinNum, GPIO_DIRECTION_INPUT);
GPIO_setTrigType(gGpioBaseAddr, pinNum, GPIO_TRIG_TYPE_RISE_EDGE);
GPIO_bankIntrEnable(gGpioBaseAddr, bankNum);
/* Register pin interrupt */
HwiP_Params_init(&hwiPrms);
hwiPrms.intNum = gGpioPinIntrNum;
hwiPrms.callback = &GPIO_pinIsrFxn;
hwiPrms.args = (void *) pinNum;
retVal = HwiP_construct(&gGpioHwiObject, &hwiPrms);
if(SystemP_SUCCESS != retVal)
{
DebugP_assert(FALSE);
}
}
For variable definitions I do the following:
gGpioBaseAddr = (uint32_t)AddrTranslateP_getLocalAddr(GPIO_IRQ0_BASE_ADDR); gGpioPinNum = GPIO_IRQ0_PIN; // /syscfg/ti_drivers_config.h declares this as (19) gGpioPinIntrNum = GPIO_IRQ0_INTR_NUM; // According to the file ../syscfg/ti_drivers_config.h // GPIO_IRQ0_PIN is (19) // GPIO_IRQ0_INTR_NUM is (CSLR_R5FFSS0_CORE0_INTR_MAIN_GPIOMUX_INTROUTER0_OUTP_7)
However, doing this I am unable to trigger the GPIO_pinIsrFxn().
What am I doing wrong...?