大家好,
我使用的是 S32K1 MCU,我定义了一个输入引脚来检测信号下降沿。
pin_mux.c
剧透 (Highlight to read)
{
.base = PORTC,
.pinPortidx = 8U,
.pullConfig = PORT_INTERNAL_PULL_NOT_ENABLED,
.driveSelect = PORT_HIGH_DRIVE_STRENGTH,
.passiveFilter = false,
.mux = PORT_MUX_AS_GPIO,
.pinLock = false,
.intConfig = PORT_INT_FALLING_EDGE,
.clearIntFlag = false,
.gpioBase = PTC,
.direction = GPIO_INPUT_DIRECTION,
.digitalFilter = true,
.initValue = 1U,
},
{.base = PORTC,.pinPortIdx = 8U,.pullConfig = PORT_INTERNAL_PULL_NOT_ENABLED,.driveSelect = PORT_HIGH_DRIVE_STRENGTH,.passiveFilter = false,.mux = PORT_MUX_AS_GPIO,.pinLock = false,.intConfig = PORT_INT_FALLING_EDGE,.clearIntFlag = false,.gpioBase = PTC,.direction = GPIO_INPUT_DIRECTION,.digitalFilter = true,.initValue = 1U,},
剧透 (Highlight to read)const port_digital_filter_config_t PTC_filter_Paras={
.clock = PORT_DIGITAL_FILTER_LPO_CLOCK,
.width = 5U,
};
#define PTC_Filter_Conf ((port_digital_filter_config_t*)&PTC_filter_Paras)
static inline void Set_Pin_Interrupt_Filter(void){
PINS_DRV_ConfigDigitalFilter(PORTA, PTA_Filter_Conf);
PINS_DRV_ConfigDigitalFilter(PORTC, PTC_Filter_Conf);
}
const port_digital_filter_config_t PTC_filter_Paras={.clock = PORT_DIGITAL_FILTER_LPO_CLOCK,.width = 5U,};#define PTC_Filter_Conf ((port_digital_filter_config_t*)&PTC_filter_Paras)static inline void Set_Pin_Interrupt_Filter(void){PINS_DRV_ConfigDigitalFilter(PORTA, PTA_Filter_Conf);PINS_DRV_ConfigDigitalFilter(PORTC, PTC_Filter_Conf);}
剧透 (Highlight to read)void PORTC_IRQHandler(void){
FLT_OVP_VBUS_Handler();//Check the PTC8 interrupt enabled or not
PINS_DRV_ClearPortIntFlagCmd(PORTC);
}
void PORTC_IRQHandler(void){FLT_OVP_VBUS_Handler();//Check the PTC8 interrupt enabled or notPINS_DRV_ClearPortIntFlagCmd(PORTC);}
我在 PORTC_IRQHandler 中添加了一个断点。
管脚和管脚过滤器初始化后,然后触发PORTC_IRQHandler(),但我用示波器 测量输入信号一直为高电平,没有下降沿退出。
同时,寄存器数据:
PORTC/ISFR,0x4004B0A0,0x00000
1 00
PTC/PDIR,0x400FF090,0x00024
1 30
PTC8/PDIR 为 High 但 PORTC8/ISFR 为 High,这不是预期的动作,如何设置此引脚?