杰理AC695N创建GPIO中断

杰理AC695N创建GPIO中断的方法

官方SDK里没有单独GPIO中断的demo,需要自己写一个,此例程支持上升沿、下降沿或者双边缘触发

int iocap_init(u32 port)
{
   
   
    log_info("%s[port:0x%x]", __func__, port);
    iocap_input_io_sel(port);
    iocap_config();
    iocap_timeout_set();
    return 0;
}

初始化GPIO

static void iocap_input_io_sel(u8 port)
{
   
   
    log_info("%s[port:0x%x]", __func__, port);
    INPUT_CHANNEL1_SRC_SEL(port);
    /* INPUT_CHANNEL2_SRC_SEL(port); */
    /* gpio_irflt_in(port); */
    gpio_set_direction(port, 1);
    gpio_set_die(port, 1);
#if IO_CAP_DEFAULT_LEVEL
    gpio_set_pull_up(port, 1)
<think>好的,我现在需要帮助用户解决在杰理AC695X芯片中设置IO_PORTB_04引脚为输入高阻态的问题。首先,我需要回忆一下杰理芯片的GPIO配置方法,特别是AC695X系列的。根据用户提供的引用内容,提到了gpio_irq_disable函数和GPIO crossbar功能配置,这可能涉及到中断的禁用和引脚复用配置。 首先,GPIO的基本配置通常包括设置方向(输入或输出)、上下拉电阻、以及驱动能力等。高阻态输入一般意味着引脚处于输入模式,且没有上下拉电阻,即浮空输入。所以需要确认AC695X的GPIO配置寄存器如何设置这些参数。 接下来,用户提到的IO_PORTB_04,需要确定其对应的端口和引脚号。通常,PORTB的第四个引脚可能对应特定的寄存器位。需要查阅AC695X的数据手册,确认具体的寄存器地址和位定义。 然后,根据杰理的SDK,GPIO的配置可能通过一系列函数来完成,比如gpio_set_direction、gpio_set_pull等。例如,设置方向为输入,禁用上下拉电阻,可能就能达到高阻态。同时,用户提到的gpio_irq_disable函数可能需要调用,以禁用该引脚的中断功能,避免干扰。 另外,GPIO crossbar功能配置可能涉及引脚复用,需要确保该引脚没有被配置为其他外设功能(如UART、SPI等),而是作为普通GPIO使用。这可能需要调用相关的crossbar配置函数,比如gpio_set_func来设置为GPIO模式。 最后,初始化流程可能需要将以上步骤整合,在系统启动时进行配置。需要确认是否有必要在初始化时关闭中断,保证配置过程稳定。 需要注意的是,如果用户提供的引用中的函数参数是否正确,比如gpio_irq_disable的port和pin参数是否对应PORTB和04引脚。此外,是否有其他相关的配置函数需要调用,比如设置输入模式的具体函数。 可能还需要考虑是否有例程或示例代码可以参考,确保配置的正确性。如果用户没有提到具体的SDK版本,可能需要假设使用最新的文档,或者建议用户查阅对应版本的指南。 总结步骤可能如下: 1. 禁用PORTB_04的中断。 2. 配置crossbar,确保引脚作为GPIO使用。 3. 设置引脚方向为输入。 4. 禁用上下拉电阻。 5. 确认驱动能力设置(如果有的话)。 需要验证每个步骤对应的函数和参数是否正确,特别是端口和引脚的表示方式是否正确(比如pin是否是位掩码或编号)。例如,gpio_set_pull可能需要传递端口、引脚和上下拉状态参数。</think>在杰理AC695X芯片中配置IO_PORTB_04为输入高阻态需以下步骤: ### 1. **禁用中断** 调用中断禁用函数关闭该引脚的中断响应: ```c gpio_irq_disable(GPIO_PORT_B, 1 << 4); // PORTB_04对应第4位 ``` > 参数`1 << 4`表示引脚4的位掩码[^1] ### 2. **配置GPIO复用功能** 通过crossbar设置引脚为GPIO模式: ```c gpio_set_func(GPIO_PORT_B, GPIO_PIN_4, AS_GPIO); // 设为普通GPIO ``` ### 3. **方向与电气特性配置** 设置输入模式并关闭上下拉电阻: ```c gpio_set_direction(GPIO_PORT_B, GPIO_PIN_4, GPIO_DIR_INPUT); // 输入模式 gpio_set_pull(GPIO_PORT_B, GPIO_PIN_4, FLOAT); // 浮空输入(高阻态) ``` ### 初始化代码示例 ```c void portb04_init(void) { gpio_irq_disable(GPIO_PORT_B, 1 << 4); gpio_set_func(GPIO_PORT_B, GPIO_PIN_4, AS_GPIO); gpio_set_direction(GPIO_PORT_B, GPIO_PIN_4, GPIO_DIR_INPUT); gpio_set_pull(GPIO_PORT_B, GPIO_PIN_4, FLOAT); } ``` ### 注意事项 - 高阻态下引脚易受噪声干扰,长距离走线建议增加外部上拉/下拉 - 读取引脚状态使用`gpio_read(GPIO_PORT_B, GPIO_PIN_4)` - 调试时可用万用表测量电压确认高阻态(电压约0.5V-2.8V为正常)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值