华大的hc32l136外部中断引脚怎么设置

设置后旋转编码器的开关和旋钮没有反应,用示波器有测试,有方波。

参考例程

设置华大HC32l136的外部中断引脚,可以按照以下步骤进行:
1.为GPIO组启用时钟,该组包括您要使用的外部中断引脚。
2.通过将EXTIx_ICR寄存器中对应的Pxy_IE位设置为1,将GPIO引脚配置为外部中断。
3.通过将适当的值写入NVIC_IPRx寄存器中的相应中断位置来设置NVIC中的中断优先级。
4.通过将NVIC_ISERx寄存器中的相应位设置为1,启用NVIC中的中断。

确保配置正确,并且中断已正确初始化。此外,通过使用中断服务例程切换LED或向控制台输出消息来检查中断是否正在发生。

如果旋转编码器的开关和旋钮在设置外部中断引脚后没有响应,则可能需要进行故障排除以确定问题的原因。一些可能的原因可能是初始化不正确、接线不正确或硬件问题。当按下编码器开关或旋转旋钮时,可以使用示波器检查信号是否正确触发。

仅供参考:

void my_gpio_set(void){
  __HAL_RCC_GPIOA_CLK_ENABLE();                           //  开时钟假设是A口时钟
  GPIO_InitStruct.Pin = KEY_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;     //  双边沿触发
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);         //  初始化模式
 
  HAL_NVIC_SetPriority(EXTI3_IRQn, 2, 0);                 // 设置优先级
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);                         // 开中断
}
// 中断代码中处理
void EXTI3_IRQHandler(void)
{
  // 清标志等等...... 
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
}

华大单片机HC32L130/HC32L136红外端口配置
可以参考下
https://blog.csdn.net/u014694105/article/details/105506819/

可能是你的程序没有正确响应中断并处理编码器的动作,导致旋转编码器的开关和旋钮没有反应。建议检查中断处理程序代码和编码器的驱动程序是否正确。

参考gpt:
如果你在旋转编码器设置后发现开关和旋钮没有反应,但示波器显示有方波信号,可能是以下几个可能的原因:

电源问题:检查编码器的电源供应是否正常。确保编码器正常连接到适当的电源,电压稳定且符合编码器的要求。
连接问题:确保编码器正确连接到目标设备。检查编码器的引脚连接是否正确,包括开关和旋钮的引脚连接。
输入信号处理:确认编码器的输入信号是否正确处理。编码器通常会产生两个相位相反的方波信号,这些信号由设备进行处理以获得旋转和开关的输入。
编程设置问题:检查目标设备的编程设置。有时,需要在软件或固件中设置编码器的输入模式和处理方式,以确保正确解释和处理编码器的输入信号。
编码器故障:最后,如果以上步骤都没有解决问题,可能是编码器本身出现故障。在这种情况下,你可能需要更换或修复编码器。

在HC32L136芯片上配置外部中断引脚,需要进行以下步骤:

  1. 确定你要使用的外部中断引脚,如Pxy(x为端口号,y为引脚号),以及中断触发条件(上升沿、下降沿、边沿触发等)。

  2. 在代码中包含相应的头文件,例如hc32l136.hgpio.h

#include "hc32l136.h"
#include "gpio.h"
  1. 初始化所需的GPIO引脚,将其设置为输入模式。假设你要使用Pxy作为外部中断引脚,以下示例将其设置为上升沿触发。
// 初始化外部中断引脚
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.u16ExInt = GPIO_EXINT_ON;
GPIO_InitStructure.u16ExIntCmd = GPIO_EXINT_TRIG_RISING;
GPIO_Init(Pxy, &GPIO_InitStructure);

其中,Pxy是你要使用的GPIO引脚。

  1. 配置外部中断相关的NVIC(Nested Vectored Interrupt Controller)设置,使能相应的中断。
// 配置NVIC
NVIC_ClearPendingIRQ(EXINT_IRQn);  // 清除中断挂起标志
NVIC_SetPriority(EXINT_IRQn, 1);   // 设置中断优先级
NVIC_EnableIRQ(EXINT_IRQn);        // 使能中断
  1. 在中断处理函数中编写相应的代码来处理中断事件。
// 外部中断处理函数
void EXINT_IRQHandler(void)
{
    // 在此处编写处理中断事件的代码
    // 例如,读取旋转编码器的状态并执行相应的操作
}

确保在中断处理函数中编写适当的代码来处理你需要的功能。

注意:以上代码片段仅为示例,实际的配置和处理过程可能会根据具体的芯片和需求有所不同。请参考芯片的官方文档和相关参考资料,以确保正确配置和使用外部中断功能。

如果您的旋转编码器设置后没有任何反应,并且您使用示波器测试时看到有方波信号,可能有以下几个原因:

  1. 连接问题:首先,请确保旋转编码器正确连接到您的电路或设备。检查旋转编码器的引脚连接是否正确,包括正常的电源和地连接。还要确保旋转编码器的输出信号线正确连接到目标设备。
  2. 供电问题:检查旋转编码器的供电情况。旋转编码器通常需要适当的电源供电才能正常工作。确保您提供了正确的电压和电流,以满足旋转编码器的要求。
  3. 编码器设置:某些旋转编码器具有配置选项或设置参数,例如旋转方向、计数方式等。请确保您正确配置了旋转编码器的相关设置。参考旋转编码器的文档或规格说明,查看是否需要进行特定设置才能使其正常工作。
  4. 故障检测:如果您已经检查了上述因素,并且仍然无法解决问题,可能是旋转编码器本身存在故障。尝试使用其他旋转编码器进行测试,或者将该旋转编码器连接到其他设备以确认是否存在问题。

请根据上述建议逐一排除可能的问题,并确保您的旋转编码器正确连接和配置。如果问题仍然存在,您可能需要进一步检查电路设计或咨询相关领域的专业人士以获得更详细的帮助。

引用chatgpt:
首先,需要确认外部中断引脚的连接是否正确。根据HC32L136的数据手册,外部中断引脚为PA0和PA1,需要将它们连接到编码器的开关和旋钮上。

其次,需要设置外部中断的触发方式和优先级。在HC32L136的配置文件中,可以通过设置INT_CTRL寄存器来实现。具体来说,需要将INT_CTRL[0]位设置为1,表示使用外部中断0作为编码器输入;同时,还需要设置INT_CTRL[1]位为1,表示使用外部中断1作为编码器输入。此外,还需要设置INT_CTRL[2]位为1,表示使用外部中断0作为中断优先级最高。

最后,需要编写中断服务函数来处理编码器的输入信号。在代码中,可以使用GPIO_IntTypeDef结构体来定义中断类型和参数,然后在中断服务函数中读取编码器的输入信号,并进行相应的处理。

如果以上步骤都正确执行,但旋转编码器的开关和旋钮仍然没有反应,可能是由于其他原因导致的。建议检查硬件连接、代码逻辑等方面,以确定问题的具体原因。