帮网站网站做推广被抓会判刑吗,wordpress 图片灯箱,传统企业网站建设,软件开发和网站开发有何不同配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好
第一步#xff1a;配置RCC#xff0c;把我们涉及到的外设的时钟都打开
#xff08;此处EXTI是默认打开的#xff0c;而NVIC是内核外设无需配置#xff09;
第二步#xff1a;配置GPIO,选择端口为输入模式
第三… 配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好
第一步配置RCC把我们涉及到的外设的时钟都打开
此处EXTI是默认打开的而NVIC是内核外设无需配置
第二步配置GPIO,选择端口为输入模式
第三步配置AFIO一共有16个引脚可以选择每个引脚只能配一个GPIO端口
第四步配置EXTI选择边沿触发方式比如上升沿下降沿双边沿
选择触发响应方式中断响应事件响应
中断响应CPU处理
事件响应对应某个外设处理,CPU正常工作
第五步配置NVIC给中断设置响应优先级和抢占优先级
响应优先级当中断队列中有多个请求时响应优先级高的数字越小越高将会优先执行
抢占优先级当已有中断在运行时此时再来一中断请求若其抢占优先级比正在运行的中断事件的抢占优先级高的话会在原中断事件上再嵌套一个中断事件
原理图 模板代码
uint16_t Key_Count 0;//中断计数位
void KeyIt_Init(void)//按键中断初始化函数
{GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO初始化传参结构体EXTI_InitTypeDef EXTI_InitStructure;//定义EXTI初始化传参结构体NVIC_InitTypeDef NVIC_InitStructure;//定义NVIC初始化传参结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//打开AFIO时钟GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU;//设置为上拉输入模式GPIO_InitStructure.GPIO_Pin GPIO_Pin_1;//选择1号引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;//设置IO口速度为50MHzGPIO_Init(GPIOA,GPIO_InitStructure);//初始化GPIO传入结构体参数GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);//在AFIO里将1号引脚的中断线路分配给GPIOA端口EXTI_InitStructure.EXTI_Line EXTI_Line1;//选择外部中断线路为1号线路1号引脚对应的线路EXTI_InitStructure.EXTI_LineCmd ENABLE;//使能对应外部中断线路EXTI_InitStructure.EXTI_Mode EXTI_Mode_Interrupt;//设置为中断模式有中断模式和事件模式EXTI_InitStructure.EXTI_Trigger EXTI_Trigger_Falling;//设置为低电平触发中断EXTI_Init(EXTI_InitStructure);//初始化EXTI,传入结构体参数NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//将优先级设置为分组2的配置即抢占优先级为2位0~3响应优先级为2位0~3数字越小优 先级越高NVIC_InitStructure.NVIC_IRQChannel EXTI1_IRQn;//选择为EXTI1通道NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE;//使能对应通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 1;//设置抢占优先级为1NVIC_InitStructure.NVIC_IRQChannelSubPriority 1;//设置响应优先级为1NVIC_Init(NVIC_InitStructure);//初始化NVIC传入结构体参数
}
uint16_t Key_Count_Get(void)//返回中断计数位函数
{return Key_Count;//返回中断计数位
}
void EXTI1_IRQHandler(void)//每个中断的中断处理函数都是固定的在启动文件里找
{if (EXTI_GetITStatus(EXTI_Line1) SET//如果该中断线路状态寄存器值为SET){Key_Count;//中断计数位自增EXTI_ClearITPendingBit(EXTI_Line1);//清除中断标志位}
}