实验课程

THIS NAME

实验课程

当前位置: 首页 >> 实验课程 >> 正文

嵌入式Cortex-M应用-外部中断实验

发布日期:2024-08-19    作者:陆其美     来源:     点击:

外部中断实验

一、实验目的

1、进一步熟悉 STM32 芯片I/O 口的配置方法,

2、掌握用库函数实验中断的流程:

3、能够熟练应用编写中断函数

4、掌握 STM32 中断的基本操作。

二、实验内容

1.外部中断相关知识,

2.如何使用 STM32cubeide 进行编程完成功能,按键中断控制 LED 灯亮灭

三、实验设备

一套stm32实验设备、头歌教学平台

四、实验原理及说明

外部中断( EXTI )是 STM32 芯片实时处理外部事件的一种机制,由于中断请求来自于 GPIO 端口的引脚, 所以称之为外部中断。

中断就是cpu在执行程序时,有其他事件需要占用cpu,cpu接收到这个中断请求后暂停原程序的执行,去执行中断函数,中断函数执行完成之后,继续回到原来的程序继续执行。

c8t6每个GPIO都可以产生中断,中断线有16个,中断服务函数最多有6个。

中断的作用:

1.中断能让 CPU 同时执行多项任务,例如 CPU 在执行流水灯程序,就无法执行“按下按键时,蜂鸣器发声”的功能。

2.当然上面的例子可以用软件轮询检测按键是否被按下,但这样就消耗了 CPU 一部分资源来轮询检测按键是否有按下了,所以中断的另一个优点就是节省 CPU 资源。

只要程序中有中断,那么就必须设置中断优先级。在一个程序中,可能存在有多个中断,因此在对中断进行配置之前,需要了解一个很重要的概念:STM32 NVIC 中断优先级管理,程序员通过控制与 NVIC 相关的寄存器,从而使中断有序的执行。

NVIC 中断优先级管理中,又有三个重要的概念:中断分组,抢占优先级,响应优先级。

STM32 的中断分组: STM32 将中断分为 5 个组,组 0-4。

抢占优先级的级别高于响应优先级,而数值越小所代表的优先级就越高。

这里需要注意两点:

第一,如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;

第二,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。

其图解如下所示:

undefined

undefined

本实验功能是使用 SW2 控制 LED3 的亮灭,按键与 LED 的原理图如下:

undefined

undefined

undefined

由上图可知,本实验主要设置管脚 PB12 和管脚 PB14。

五、实验步骤

1.1双击打开软件STM32CubeIde

undefined

1.2开始创建工程

undefined

undefined

1.3 1.3&nbsp搜索芯片STM32F103C8T6,并选择芯片型号 STM32F103C8T6 ,并点击“start project”创建工程。

undefined

1.4输入工程名字NVIC

undefined

1.5设置外部时钟源

undefined

1.6设置调试模式

undefined

1.7配置时钟为72MHz

undefined

undefined

1.8配置管脚

undefined

undefined

undefined

1.9配置NVIC功能

undefined

1.10配置完成,生成代码

undefined

undefined

1.11 进入main.c文件完成代码的编写

undefined

任务代码

1.12 在合适位置添加函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin),使得:

SW2 控制 LED3 的亮灭

示例代码:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

{

}

1.13 生成hex文件

undefined

undefined

undefined

编程要求

根据提示,在右侧编辑器补充代码,成功生成hex文件。

测试说明

点击评测,平台会对你编写的代码进行测试。

评测通过后下载生成的 hex 文件,进行下一步的操作。

undefined

此时点击“评测”系统将自行进行评测您的功能是否完成。

上一条:嵌入式Cortex-M应用-基本定时器 下一条:分布式数据库-Hbase实验

关闭