提示:小白自学,大神看到不对的地方请指出指导一下。
中断可以这样比喻:你在做一件事情,然后电话打进来,你去做电话里要求你做的是,然后做完了又回来做刚才没做完的事情。
嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。
外部 中断/事件 控制器
EXTI 有20个中断/事件线,每个GPIO都可以被设置为输入线,占用 EXTI0至EXTI15。
一般来说先选定优先级分组,选好之后就不要改了,因为改分组可能会使程序错乱。然后配置主优先级和子优先级。
如果同一分组里,主优先级相同,子优先级越低,越先发生。如果是主优先级不同,那么主优先级越低,也越先发生。等一个发生完了,再接下一个发生…当然,如果一个优先级高的先发生了,这是来了个低的,是不会打断这个正在发生的。
代码如下(示例):
GPIO_InitTypeDef GPIO_InitStruct; //声明结构体
RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK, ENABLE); //开时钟
GPIO_InitStruct.GPIO_Pin = KEY1_INT_GPIO_PIN; //配置按键的引脚
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; //配置模式
GPIO_Init( KEY1_INT_GPIO_PORT , &GPIO_InitStruct); //端口初始化写入
代码如下(示例):
EXTI_InitTypeDef EXTI_InitStruct;//声明结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//打开APB2的时钟
GPIO_EXTILineConfig( GPIO_PortSourceGPIOA, GPIO_PinSource0);//选择GPIO引脚作为EXTI线
EXTI_InitStruct.EXTI_Line = EXTI_Line0;//选择EXTI线
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;//选择中断模式
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;//选择上升触发类型
EXTI_InitStruct.EXTI_LineCmd = ENABLE;//EXTI使能
EXTI_Init( &EXTI_InitStruct);
代码如下(示例)
NVIC_InitTypeDef NVIC_InitStruct;//声明结构体
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_1);//选择优先级分组
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;//选择中断源
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;//选择主优先级
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;//选择子优先级
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;//中断使能
NVIC_Init( &NVIC_InitStruct);
NVIC_IROChannel:用来设置中断源,不同的中断中断源不一样,且不可写错,即使写错了程序也不会报错,只会导致不响应中断。
有需要的可以去固件库里查所需要的中断源
#define LED_G_TOGGLE {LED_GPIO_PORT->ODR ^= LED_GPIO_PIN;}//寄存器异或实现亮灭
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus( EXTI_Line0) != RESET )//检测是否按下
{
LED_TOGGLE;//灯亮灭
}
EXTI_ClearITPendingBit( EXTI_Line0 );//清除
}
int main(void)
{
LED_GPIO_Config();
EXTI_KEY1_Config();
while(1)
{
}
}
算是对STM32的中断有了个了解,会用按键中断来电灯,这算是入门的一大步嘛?哈哈哈,
发现每个编辑实例都可以加载不同的css样式表,而且其样式不继承 页面的css。 于...
接着昨天的,如果forEach中的items类型是map或者Collection类型的,怎样使用增强...
例如: 我们在百度中搜索 尊托云数,则网址后面的参数就是 http://www.baidu.com/...
如果你很在意你的终端的外观的话,一个跨 shell 的提示符可以让你轻松地定制和配...
Mysql数据库五——mysql事务及引擎 一、事务 1、事务的概念 2、事务的ACID特点 ...
主要目的 a. 掌握获取 GridPanel 当前行的各个字段值的方法 b. 掌握如何将前台数...
本文实例为大家分享了js实现电灯开关效果的具体代码,供大家参考,具体内容如下 ...
Asp 解析 XML并分页显示,示例源码如下: 复制代码 代码如下: !DOCTYPE html PUB...
我之前写过一个简易版的自动+手动轮播图: 简易轮播图 但是这个轮播图在切换的时...
关于我的SWFObject V1.5的使用过程,以 上篇 中的介绍暂时告一段落了,下面我将...