gpt4 book ai didi

c - LPC 1837 中的 GPIO 引脚中断问题

转载 作者:行者123 更新时间:2023-11-30 15:05:42 25 4
gpt4 key购买 nike

我正在使用以下代码,其主要主题是在lpc 1837中生成引脚中断,我在获取中断方面遇到了麻烦,任何人都可以提出这段代码中出了什么问题的建议编译器:Keil

/* Configure pin as digital input using GPIO in pin multiplexing */

GPIO_SetDir(6,0,GPIO_DIR_INPUT);
GPIO_SetDir(6,2,GPIO_DIR_INPUT);

SCU_PinConfigure(0xC,1,( SCU_CFG_MODE_FUNC4 | SCU_SFS_EPUN | SCU_SFS_ZIF ));
SCU_PinConfigure(0xC,3,( SCU_CFG_MODE_FUNC4 | SCU_SFS_EPUN | SCU_SFS_ZIF ));


/* enable edge interrupt */


LPC_GPIO_PIN_INT->ISEL = 0x00UL;

/* enable rising edge interrupt */

LPC_GPIO_PIN_INT->IENR = (GPIO_PIN_INT_IENR_ENRL0_Msk |
GPIO_PIN_INT_IENR_ENRL1_Msk );

LPC_GPIO_PIN_INT->SIENR = (GPIO_PIN_INT_SIENR_SETENRL0_Msk |
GPIO_PIN_INT_SIENR_SETENRL1_Msk );

/* enable falling edge interrupt */

LPC_GPIO_PIN_INT->IENF = (GPIO_PIN_INT_IENF_ENAF0_Msk |
GPIO_PIN_INT_IENF_ENAF0_Msk);

LPC_GPIO_PIN_INT->SIENF = (GPIO_PIN_INT_SIENF_SETENAF0_Msk |
GPIO_PIN_INT_SIENF_SETENAF1_Msk );

/* Clear pending interrupt of pin interrupt 1*/

NVIC->ICPR[(((uint32_t)(int32_t)(0x21)) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)(0x21)) & 0x1FUL));

/* set priority for pin interrupt 1 */


NVIC_SetPriority(0x21, 1);

/* enable pin interrupt */


NVIC->ISER[(((uint32_t)(int32_t)(0x21)) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)(0x21)) & 0x1FUL));

最佳答案

在所有困惑之后,有一个输入缓冲区SCU_PinConfigure(0xC,1,( SCU_CFG_MODE_FUNC4 | SCU_SFS_EPUN | SCU_SFS_ZIF | SCU_SFS_EZI ));

有一个位用于启用输入缓冲区。使能该位后,输入读取和中断被使能。谢谢回复,希望这个答案将有助于解决 GPIO 输入读取和启用中断的问题。

关于c - LPC 1837 中的 GPIO 引脚中断问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39694842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com