«

中断的使用

Sweetiey 发布于 阅读:224 课程笔记


Day4

今天学习了中断的使用,按照如下步骤
中断的使用
代码如下

void Button_Init()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//配置GPIOB时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//配置AFIO时钟

GPIO_InitTypeDef A;
    A.GPIO_Mode = GPIO_Mode_IPU;//触发引脚可以选上拉输入
    A.GPIO_Pin = GPIO_Pin_14;//B14脚
    A.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&A);//初始化GPIO

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);//EXTI有关的。PinSourse后加引脚号

    EXTI_InitTypeDef E;
    E.EXTI_Line = EXTI_Line14;//后加引脚号,多个用 | 或
    E.EXTI_LineCmd = ENABLE ;
    E.EXTI_Mode =EXTI_Mode_Interrupt ;
    E.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发
    EXTI_Init(&E);//初始化EXTI

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断分组。默认,一个程序里面只用一个
    /*下面设置中断优先级  多个引脚要单独设置*/
    NVIC_InitTypeDef I;
    I.NVIC_IRQChannel = EXTI15_10_IRQn;//这个要看引脚号,如果0,1脚要改成EXTI0_IRQn EXTI_1_IRQn
    I.NVIC_IRQChannelCmd =ENABLE;
    I.NVIC_IRQChannelPreemptionPriority=1;
    I.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&I);//初始化NVIC

}

在startup_stm32f10x_md.s里面可以看到中断函数的声明
中断的使用

然后自己写中断函数

void EXTI15_10_IRQHandler()
{
if(EXTI_GetITStatus(EXTI_Line14)==SET)//判断是不是set了
{
    Bnum++;
    EXTI_ClearITPendingBit(EXTI_Line14);//清除中断标志位

}

中断的使用
随后在头文件里面声明后就可以在主函数调用了
中断的使用
中断的使用

STM32


扫描二维码,在手机上阅读