PD5高低电平检测



  • attribute((section("ram_code"))) void pmu_gpio_isr_ram(void)
    {
    // 读取当前GPIO状态和历史状态
    uint32_t current_gpio = ool_read32(PMU_REG_GPIOD_V);
    uint32_t last_gpio = ool_read32(PMU_REG_PORTD_LAST);

    // 检测哪些引脚发生了变化
    uint32_t changed_pins = current_gpio ^ last_gpio;
    
    // 检查PD5(第5位)是否发生变化
    if (changed_pins & (1 << 5)) {
        // 获取PD5当前状态
        uint8_t pd5_current_state = (current_gpio >> 5) & 0x01;
        uint8_t pd5_last_state = (last_gpio >> 5) & 0x01;
        uint8_t fam[1]={1};
        // 检测持续高电平(电平触发模式)
        if (pd5_current_state == 1) {
            co_printf("high-level trigger\r\n");
    						uart_put_data_noint(UART0,fam,1);
    						gap_security_param_t param =
    						{
    								.mitm = false,	// dont use PIN code during bonding
    								.ble_secure_conn = false,	//not enable security encryption
    								.io_cap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT, //ble device has neither output nor input ability, 
    								.pair_init_mode = GAP_PAIRING_MODE_WAIT_FOR_REQ,		//need bond
    								.bond_auth = true,	//need bond auth
    								.password = 0,
    						};
    						 gap_security_param_init(&param);
    						 os_timer_start(&ker_timer, 60000, 0); // 60s延迟
        }
        
    
    }
    
    // 更新历史记录
    ool_write32(PMU_REG_PORTD_LAST, current_gpio);
    

    }我的这个检测pd高低电平的有什么问题吗,在HA的测试板上能正常检测,但是换成HB的芯片加了按钮之后,上电就一直触发高电平事件,初始化配置是这样的0_1768899605587_92cdfc9e-4e26-4494-b442-095bf691226d-image.png


  • Global Moderator

    @ccc 要做什么功能