1. 第二个例程就要说中断了,是不是进度有点快呢?其实,使用 STM32 带的库,是可以很方便
地实现中断的,这里例程讲的就是外部中断,EXINT. 利用了方向键盘的四个键,分别为
PD3,4,5,6.STM32 中,所有 IO 脚都可以设置为 EINT 中断,对于外部中断线,有 16 路中断,
就是 EINT0-15,分别对应于管脚的 0-16 脚.例如,PA0,PA1 使用的 EINT 中断分别就是
EXTI_Line0,和 EXTI_Line1.如果 PA0,PB0 呢?那就是共用 EXTI_Line0 咯,所以设计的时
候要注意.
2. 关于中断源,这里,外部中断的 0-4 使用独立的中断源,5-9 则共用一个,10-15 又共用一个.
所以你会在中断函数中看到有 EXTI9_5_IRQHandler()和 EXTI15_10_IRQHandler()这样
的中断函数.那么你会问,如果进入了中断,我怎么知道是那路 EXINT 引起的呢?那就是通
过读取中断标志位来判断的了,记住,16 路 EXINT 都是独立的,只是 5-9,10-15 共用了中断
响应函数而已.程序中,可利用 if(EXTI_GetITStatus(EXTI_Line5) != RESET)语句判断是否
是 LINE5 引起的中断.
3. STM32 提供了一个很方便的寄存器,就是软中断事件寄存器.例程中使用了这样的库函
数: EXTI_GenerateSWInterrupt(EXTI_Line3);这个函数运行的结果就是,如果 EXINT3 配
置了必须的中断寄存器和响应函数,则会马上产生一个 EXINT3 中断,.是不是很方便呢?
4. NVIC 的一些小知识,NVIC 是 COTEX-M3 的一种中断机制,其中最让你头大的应当是中
断响应的分组和优先级问题了,参考 NVIC.C 文件中的那个
/* 配置中断使用组合 1*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
其实这东西,要弄明白,STM32 已经给出了一个官方的简易说明,并且还是中文的呢J请看光
盘目录中的\用户手册\魅力 STM32\STM32F10x 常见应用解析.pdf 里面 P44.我在这里就不
作太多解释了.其实并不是很难懂,看完后你会觉得这个机制挺有智慧.
另外,STM32 的中断是允许嵌套的哦.而且是可以人工设置嵌套的优先级的.
5.要使用库函数写中断,记得开放 stm32f10x_conf.h 第 48 行#include "misc.h"
DX32文档
1/1
DX32 白菜的心得