/*********************************************************************
* @fn Init_InterruptIO
*
* @brief 配置外部中断IO
*
* @return none
*********************************************************************/
void Init_InterruptIO(void)
{
GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeIN_PU);
GPIOA_ITModeCfg(GPIO_Pin_5, GPIO_ITMode_RiseEdge); // 上升沿中断检测
PFIC_EnableIRQ(GPIO_A_IRQn);
}
/*********************************************************************
* @fn my_uart1_init
*
* @brief 调试串口初始化
*
* @return none
*********************************************************************/
void My_uart1_init(void)
{
/* 配置串口1:先配置IO口模式,再配置串口 */
GPIOA_SetBits(GPIO_Pin_9);
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-配置上拉输入
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); //TXD-配置推挽输出
UART1_DefInit();
//中断配置
UART1_ByteTrigCfg(UART_1BYTE_TRIG);
UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
PFIC_EnableIRQ(UART1_IRQn);
}
/*********************************************************************
* @fn GPIOA_IRQHandler
*
* @brief GPIOA中断函数
*
* @return none
*********************************************************************/
__INTERRUPT
__HIGH_CODE
void GPIOA_IRQHandler(void)
{
GPIOA_ClearITFlagBit(GPIO_Pin_5);
printf("in IQR \r\n");
}
/*********************************************************************
* @fn main
*
* @brief 主函数
*
* @return none
*********************************************************************/
int main(void)
{
SetSysClock(CLK_SOURCE_PLL_60MHz);
Init_InterruptIO();
My_uart1_init();
while(1);
}
目前自己配置以上,但是测试没有效果,不知道IO检测中断还需要配置什么?是否有这方面的例子可以参考?