工具/软件:
我正在尝试设置 AM6442 GPIO 的去抖功能。
目标 GPIO 是 GPIO1_64 和 GPIO1_65、我尝试将周期设置为“最接近 1us 的值“。
我创建了以下初始化函数、并将其放在 R5F0-1 内核上运行的应用程序的 Board_init () 之后。
void DebounceInitialize(void){
CSL_mcu_ctrl_mmr_cfg0Regs *regs = (CSL_mcu_ctrl_mmr_cfg0Regs *)(uintptr_t)CSL_CTRL_MMR0_CFG0_BASE;
volatile uint32_t *debounce1Reg = NULL;
debounce1Reg = ®s->DBOUNCE_CFG1;
CSL_REG32_WR(debounce1Reg, 53);
uint32_t baseAddr;
volatile uint32_t *regAddr;
uint32_t setting;
baseAddr = CSL_PADCFG_CTRL0_CFG0_BASE + PADCFG_PMUX_OFFSET;
Pinmux_unlockMMR(PINMUX_DOMAIN_ID_MAIN);
regAddr = (volatile uint32_t *)(baseAddr + PIN_I2C0_SCL);
setting = (CSL_REG32_RD(regAddr) | PIN_DEBOUNCE1_ENABLE);
CSL_REG32_WR(regAddr, setting);
regAddr = (volatile uint32_t *)(baseAddr + PIN_I2C0_SDA);
setting = (CSL_REG32_RD(regAddr) | PIN_DEBOUNCE1_ENABLE);
CSL_REG32_WR(regAddr, setting);
Pinmux_lockMMR(PINMUX_DOMAIN_ID_MAIN);
return;
}
为了验证是否反映了这些设置、我执行了以下测试。
-将中断设置为 GPIO1_65 上的“在调试输出中显示“。
-在 AM6442 上运行应用并输入宽度为 0.5us 的负脉冲至 GPIO1_65。
我预测“不会发生中断“、但实际上确实发生了中断。
我认为初始化过程出错、设置不符合预期。
请告诉我设置它的正确方法。
