为什么 PIO1_8 不能用于 LPC1519 的外部中断输入? 我正在使用 LPC1519(ARM Cortex-M3),正在尝试使用端口 1,引脚 8(PIO1_8)作为水流量传感器的外部中断输入。 我将 PIO1_8 配置为 GPIO 输入,并使用 INMUX 将其路由到 PININT 通道,然后启用下降沿检测并启用 IRQ。但是,当脉冲施加到 P1_8 时,中断永远不会触发信号。 Re: Why is PIO1_8 not working for external interrupt input on LPC1519? 嗨,@Trups_123、
很抱歉过了一段时间才给您回复。
由于找不到 LPC_GPIO_PORT 的定义,我无法跟进整个配置过程。但是,我建议查看 perephero_pinint 示例,该示例配置了由下降沿触发信号的引脚中断。
您可以按照以下步骤在 MCUXpresso 中找到该示例:
快速启动面板 -> 创建或导入项目 -> 从文件系统导入项目。
Pablo_Ramos_0-1756503468961.png
项目档案 (zip) -> 浏览 -> LPCOpen -> lpcxpresso_1549
Pablo_Ramos_1-1756503511164.png
选择 lpc_board_nxp_lpcxpresso_1549、lpc_chip_15xx 和 periph_pint
Pablo_Ramos_2-1756503530328.png
敬上, Pablo Re: Why is PIO1_8 not working for external interrupt input on LPC1519? 等待解决 Re: Why is PIO1_8 not working for external interrupt input on LPC1519? #include"chip.h" #include #define FLOW_PIN_PORT 1 #define FLOW_PIN_NUM 8 #define FLOW_IRQ_NUM PIN_INT0_IRQn // 使用 PININT0 #define FLOW_CH PININTCH0 volatile uint32_t pulse_count = 0; /* 流量传感器的中断服务例程 */ void pin_int0_irqHandler (void) {i f (Chip_pinint_GetfallStates (LPC_PININT) & (1 < < FLOW_CH)) {pulse_count++;//计数脉冲 chip_pinint_clearintStatus (LPC_PININT, FLOW_CH);}} int main(void) { SystemCoreClockUpdate(); // 初始化 GPIO Chip_GPIO_Init(LPC_GPIO_PORT); Chip_IOCON_PinMuxSet(LPC_IOCON,FLOW_PIN_PORT,FLOW_PIN_NUM, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); Chip_GPIO_SetPinDIRInput(LPC_GPIO_PORT,FLOW_PIN_PORT,FLOW_PIN_NUM); // 将引脚映射到中断通道(通道 0) Chip_INMUX_PinIntSel(0, FLOW_PIN_PORT, FLOW_PIN_NUM); // 配置下降沿中断 Chip_PININT_ClearIntStatus(LPC_PININT,FLOW_CH); Chip_PININT_SetPinModeEdge(LPC_PININT,FLOW_CH); Chip_PININT_EnableIntLow(LPC_PININT,FLOW_CH); // 为 PIN_INT0 启用 NVIC NVIC_ClearPendingIRQ(FLOW_IRQ_NUM); NVIC_EnableIRQ(FLOW_IRQ_NUM); while (1) { uint32_t start_count = pulse_count; // 1 秒延迟循环 for (volatile uint32_t i = 0; i< (SystemCoreClock/1000 * 1000); i++); uint32_t pulses_per_sec = pulse_count - start_count; float flow_rate = (float)pulses_per_sec / 7.5f; // 升/分钟(取决于传感器规格!)。 printf (" 流速:%.2f L/min,总脉冲:%lu\n ", 流速,脉冲数);}} Re: Why is PIO1_8 not working for external interrupt input on LPC1519? #define FLOW_PIN_PORT 1 #define FLOW_PIN_NUM 8 #define FLOW_IRQ_NUM pin_int0_IRQN//示例:使用 PIN_INT0 #define FLOW_CH PININTCH0 v olatile uint32_t pulse_t pulse_count++ = 0;//流量传感器的中断服务例程 */ void pin_int0_IRQHandler (void) {pulse_count++;//计数脉冲 chip_pinint_clearfall++;//计数脉冲 chip_pinint_clearfall++;//计数状态 (LPC_PININT、FLOW_CH);} int main ( void) {SystemcoreClockUpdate (); //初始化 GPIO 芯片_GPIO_INIT (LPC_GPIO_PORT); chip_IOCON_PORT (LPC_IOCON, FLOW_PIN_PORT, FLOW_PIN_NUM, (IOCON_FUNC0 | IOCON_MODE_PULLUP)); chip_GPIO_ setpindirInput (LPC_GPIO_PORT、FLOW_PIN_PORT、FLOW_PIN_NUM);//将引脚映射到中断通道 Chip_inmu x_pinintsel (0, FLOW_PIN_PORT, FLOW_PIN_NUM);//配置后沿中断芯片_pinint_clearintStatus (LPC_PININT,FLOW_CH);chip_pinint_setpinnt_setpinmodeEDGE (LPC_PININT,FLOW_CH); //启用 NVIC nvic_CLEARPendingIRQ (FLOW_IRQ_NUM);nvic_enableIRQ (FLOW_IRQ_NUM)); 而 (1) {/ /示例:每 1 秒测量一次流量 uint32_t start_count = pulse_count; chip_clock_system_busyWait_ms (1000); uint32_t pulses_per_sec = pulse_count =( 浮动)pulses_per_sec/7.5f;//L/min printf (" 流速:%.2f 升/分钟,总计脉冲:%lu\n ",流速,脉冲数);} Re: Why is PIO1_8 not working for external interrupt input on LPC1519? 嗨,@Trups_123、
你是如何生成应用于 P1_8 的脉冲的?
另外,你能否分享一下你将引脚 P1_8 设置为外部中断的代码片段?
敬上, Pablo
View full article