外部中断实验-物联网

举报
泽宇-Li 发表于 2022/11/27 23:17:56 2022/11/27
【摘要】 中断全过程 中断发生——当CPU在处理某一事件A时, 发生了另一事件B,请求CPU迅速去处理 中断处理 ——CPU暂停当前的工作,转去处理事件B 中断返回——当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A 以上三个过程称为中断

中断概念:

中断全过程

  1. 中断发生——当CPU在处理某一事件A时, 发生了另一事件B,请求CPU迅速去处理
  2. 中断处理 ——CPU暂停当前的工作,转去处理事件B
  3. 中断返回——当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 按键接口

WiFiCC3200)模块硬件上设计有2LED灯,用来编程调试使用。分别连接CC3200GPIO11GPIO30两个IO引脚。从原理图上可以看出,2LED共阴极,当GPIO11GPIO30引脚为高电平时候,LED灯点亮。

WiFiCC3200)模块上按键引脚连接到核心板的GPIO22,当按键按下时为低电平,将中断方式设置为下降沿触发方式。

  • CC3200 IO 相关寄存器

3.3  GPIO 功能寄存器

3.4  GPIO数据寄存器

3.5  中断检测寄存器

3.6  中断触发方式控制寄存器

以上图表列出了关于CC3200处理器的GPIO中断相关寄存器,CC32004GPIO ,每组的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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。