四种模式:
GPIO_PMD_INPUT 输入模式
GPIO_PMD_OUTPUT 输出模式(推挽输出,有电流驱动能力)
GPIO_PMD_OPEN_DRAIN 开漏输出模式
GPIO_PMD_QUASI 准双向模式
中断:
GPIO_INT_RISING 上升沿触发
GPIO_INT_FALLING 下降沿触发
GPIO_INT_BOTH_EDGE 上升下降沿触发
GPIO_INT_HIGH 高电平触发
GPIO_INT_LOW 低电平触发
函数描述:用于设置指定的GPIO操作模式
参数: port 端口P0, P1, P2, P3 or P4.
参数: u32PinMask 具体引脚BIT0 ~ BIT7.
参数: u32Mode 四种模式
void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
函数描述:使能GPIO中断
参数: port P0, P1, P2, P3 or P4.
参数: u32Pin 引脚号码0 ~ 7
参数: u32IntAttribs 中断触发
void GPIO_EnableInt(GPIO_T *port, uint32_t u32Pin, uint32_t u32IntAttribs)
函数描述:失能GPIO中断
参数: port P0, P1, P2, P3 or P4.
参数: u32Pin 引脚号码0 ~ 7
void GPIO_DisableInt(GPIO_T *port, uint32_t u32Pin)
函数描述:获取GPIO中断标志
GPIO_GET_INT_FLAG(port, u32PinMask)
函数描述:清除GPIO中断标志
GPIO_CLR_INT_FLAG(port, u32PinMask)
函数描述:失能中断消抖功能
GPIO_DISABLE_DEBOUNCE(port, u32PinMask)
函数描述:使能中断消抖功能
GPIO_ENABLE_DEBOUNCE(port, u32PinMask)
函数描述:设置消抖采样采样周期、时间
GPIO_SET_DEBOUNCE_TIME(u32ClkSrc, u32ClkSel)
//初始化
Void GPIO_Init()
{
/* P10 配置为输出,P24 配置为输入模式 */
GPIO_SetMode(P1, 0, GPIO_PMD_OUTPUT);
GPIO_SetMode(P2, 4, GPIO_PMD_INPUT);
/* P10 配置为输出*/
GPIO_SetMode(P1, 0, GPIO_PMD_OUTPUT);
/*从P10输出0*/
P10 = 0;
/*如果P11为低电平,P12输出高电平*/
if(P11 == 0)
P12 = 1;
/* 将 P25 配置为输入模式并使能上升沿中断 */
GPIO_SetMode(P2, 5, GPIO_PMD_INPUT);
GPIO_EnableInt(P2, 5, GPIO_INT_RISING);
NVIC_EnableIRQ(GPIO_P2P3P4_IRQn);
/* 将 P12 配置为输入模式,打开内部上拉,并使能下降沿中断 */
GPIO_SetMode(P1, 2, GPIO_PMD_INPUT);
GPIO_EnableInt(P1, 2, GPIO_INT_FALLING);
NVIC_EnableIRQ(GPIO_P0P1_IRQn);
}
//中断服务函数
void GPIOP2P3P4_IRQHandler()
{
if(GPIO_GET_INT_FLAG(P2, BIT0))
{
GPIO_CLR_INT_FLAG(BIT0);
}
else//清除其他端口不必要的中断
{
P2->ISRC = P2->ISRC;
P3->ISRC = P3->ISRC;
P4->ISRC = P4->ISRC;
}
}
|