外部中断实验-物联网
【摘要】 中断全过程
中断发生——当CPU在处理某一事件A时, 发生了另一事件B,请求CPU迅速去处理
中断处理 ——CPU暂停当前的工作,转去处理事件B
中断返回——当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A
以上三个过程称为中断
中断概念:
中断全过程
- 中断发生——当CPU在处理某一事件A时, 发生了另一事件B,请求CPU迅速去处理
- 中断处理 ——CPU暂停当前的工作,转去处理事件B
- 中断返回——当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A
以上三个过程称为中断
1. 实验目的
- 学习CC3200中外部中断控制原理
- 通过串口按键控制LED灯
2. 实验环境
- 硬件:WiFi(CC3200)模块,UART下载调试板,PC机
- 软件:IAR Embedded Workbench for ARM
- 实验目录:Src\Src\WiFi\Components\CC3200_basic\Exp03 Timer
3. 实验原理
- WiFi(CC3200)模块 LED 硬件接口
图 3.1 LED 硬件接口
图 3.2 按键接口
WiFi(CC3200)模块硬件上设计有2个LED灯,用来编程调试使用。分别连接CC3200的GPIO11、GPIO30两个IO引脚。从原理图上可以看出,2个LED共阴极,当GPIO11、GPIO30引脚为高电平时候,LED灯点亮。
WiFi(CC3200)模块上按键引脚连接到核心板的GPIO22,当按键按下时为低电平,将中断方式设置为下降沿触发方式。
- CC3200 IO 相关寄存器
图 3.3 GPIO 功能寄存器
图 3.4 GPIO数据寄存器
图 3.5 中断检测寄存器
图 3.6 中断触发方式控制寄存器
以上图表列出了关于CC3200处理器的GPIO中断相关寄存器,CC3200有4组GPIO ,每组的GPIO共用一个中断处理函数,既然有多个GPIO共用一个中断处理函数,当然要在中断函数查询哪个GPIO触发中断的(可以查询中断状态寄存器),详情请用户参考CC3200的芯片手册。
4. 实验步骤
1)将WiFi通讯模块、UART调试板按照下图方式连接,USB线接到电脑。
2)用IAR for ARM打开实验工程,目录:Src\Src\WiFi\Components\CC3200_basic\Exp02 Interrupt\project\interrupt \ewarm,之后打开后缀名为(.eww)的工程文件。
3)编译程序,菜单栏Project->Rebuild All。
4)运行CCS UniFlash烧写软件,烧写Exp02 Interrupt\project\interrupt \ewarm\Release\Exe目录下的interrupt.bin文件。
部分代码展示:
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
//外部中断初始化函数
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //外部中断,需要使能AFIO时钟
KEY_Init();//初始化按键对应io模式
//GPIOC.5 中断线以及中断初始化配置
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
EXTI_InitStructure.EXTI_Line = EXTI_Line5;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
//GPIOA.15 中断线以及中断初始化配置
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);
EXTI_InitStructure.EXTI_Line = EXTI_Line15;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
//GPIOA.0 中断线以及中断初始化配置
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);.........................
作者:泽宇-Li
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)