首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32总结(4)

STM32总结(4)

本帖最后由 look_w 于 2017-9-23 15:51 编辑

EXTI外部中断
STM32 的所有 GPIO 都引入到 EXTI 外部中断线上,使得所有的 GPIO 都能作为外部中断的输入源。 GPIO 与 EXTI 的连接方式见图
其他口类推。PAx~PGx端口的中断事件都连接到了EXTIx,即同一时刻EXTx 只能相应一个端口的事件触发,不能够同一时间响应所有GPIO 端口的事件,但可以分时复用。它可以配置为上升沿触发,下降沿触发或双边沿触发。
一般配置一个 I/O为 EXTI中断的步骤, 主要为:
1. 使能 EXTIx 线的时钟和第二功能AFIO 时钟
2. 配置 EXTIx 线的中断优先级(NVIC 初始化配置)
3. 配置 EXTI 中断线I/O(EXTI 初始化配置)

调用 GPIO_EXTILineConfig()函数把GPIOE,Pin5 设置为EXTI 输入线。
4. 选定要配置为 EXTI的 I/O口线和 I/O口的工作模式
5. EXTI 中断线工作模式配置

AFIO (alternate-function I/O),指 GPIO 端口的复用功能, GPIO 除了用作普通的输入输出(主功能),还可以作为片上外设的复用输入输出,如串口, ADC,这些就是复用功能。大多数 GPIO 都有一个默认复用功能,有的GPIO 还有重映射功能, 重映射功能是指把原来属于A 引脚的默认复用功能,转移到了 B 引脚进行使用,前提是 B引脚具有这个重映射功能。当把 GPIO 用作 EXTI 外部中断或使用重映射功能的时候,必须开启 AFIO时钟,而在使用默认复用功能的时候,就不必开启AFIO 时钟了。
十二、中断处理

Cortex 向量表的地址范围从底部开始。然而,向量表不是从零开始而是从地址0x00000004 开始,因为前四个字节被用来存储堆栈指针的起始地址。

在软件中,向量表的维护通常是通过在启动时把中断服务程序地址加载到内存基地址来实现(在启动代码中)。产生中断的时候会跳到对应的地址找到中断入口地址,执行相应的中断处理函数。


STM32有两个堆栈指针:主堆栈与进程堆栈。这种系统代码和应用程序代码进行分区的方式使得应用程序代码中的错误不会导致RTOS 崩溃。

返回列表