void port_in_init(void)
{
//引脚初始化
gpio_init_type gpio_init_struct;
//使能 PB1 TIM3_CH4 对应的时钟
crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE); //开启gpioB时钟
//设置为默认值
gpio_default_para_init(&gpio_init_struct);
//设置为输入模式
gpio_init_struct.gpio_mode=GPIO_MODE_INPUT;
gpio_init_struct.gpio_pins=GPIO_PINS_1;
//设置为下拉
gpio_init_struct.gpio_pull=GPIO_PULL_DOWN;
gpio_init(GPIOB,&gpio_init_struct);
}
void at32_exint_init(void)
{
//外部中断结构初始化
exint_init_type exint_init_struct;
//使能对应的时钟
crm_periph_clock_enable(CRM_SCFG_PERIPH_CLOCK, TRUE);
scfg_exint_line_config(SCFG_PORT_SOURCE_GPIOB, SCFG_PINS_SOURCE1);
exint_default_para_init(&exint_init_struct);
exint_init_struct.line_enable = TRUE;
exint_init_struct.line_mode = EXINT_LINE_INTERRUPUT;
exint_init_struct.line_select = EXINT_LINE_0 ;//EXINT_LINE_USRKEY_PIN EXINT_LINE_0
exint_init_struct.line_polarity = EXINT_TRIGGER_RISING_EDGE;//上升沿中断
exint_init(&exint_init_struct);
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
nvic_irq_enable(EXINT1_0_IRQn, 1, 0);
}
/**
* @brief exint0 interrupt handler
* @param none
* @retval none
*/
void EXINT1_0_IRQHandler(void)
{
if(exint_flag_get(EXINT_LINE_0) != RESET)
{
USART2->dt=0x01;
send(0x01);
exint_flag_clear(EXINT_LINE_0);
}
}
|