|
STM32如何配置外部中断? + U1 t& v: k- B$ ~01单片机外部中断简介0 b' y9 L# P0 D+ F 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平、低电平)、边沿变化(上升沿、下降沿)等。51单片机有5个中断源,其中有两个是外部中断,分别为INT0和INT1,INT0被分配在P3.2引脚,INT1被分配在P3.2引脚,也即是说如果使用51单片机的外部中断0,则必须将信号接在P3.2上,否则无效。, m- Z6 _ x- W% R3 t3 E3 u. Z7 A 02举例说明什么是中断 单片机在执行程序时有两种方式:, W' }- I1 T& Z; o 查询方式 中断方式 所谓查询方式就是单片机一遍一遍的扫描,查看所监视的目标有没有发生变化,是一种主动式的监视方法,用一个成语可以很客观的描述:守株待兔。- q" \0 O1 S: [0 {# K8 v 所谓中断方式就是单片机不主动去监视目标,而是目标主动通知单片机状态发生了变化,是一种被动式的监视方法,也可以用一个成语来形容:不速之客。) V- ?8 `; N- W: R$ i! l6 f8 A4 a: ` 有一所学校的院墙破了一个洞,为了防止学生半夜跑出去上网,在墙修好之前,学校安排保安每天夜里守在那个洞的旁边监视,这就是守株待兔。到了半夜保安很困想睡觉但是又害怕扣工资,怎么办?这个保安很聪明就在洞口拉了一条绳子把绳子的另一端绑在自己的手腕上,只要有人想出去就会绊倒绳子从而惊醒睡觉的保安,这就是不速之客。这样既不影响保安睡觉,又能捉住半夜出去上网的学生,还能避免保安被扣工资,由此可见通过使用中断大大节省了保安的精力。这就是使用中断的好处。* `% D) @5 n+ R/ L# ~3 V, z% E 03STM32单片机外部中断简介 STM32单片机的每一个GPIO都可以被设置为外部中断输入,根据引脚序号的不同可以将外部中断分为不同的组,分别为PA0-PG0为EXTI0组,以此类推,PA15-PG15为EXTI15组,共16组,并且每一组中同一个时刻只能有一个中断源工作,所以,STM32单片机最多允许同时有16个外部中断。外部中断的分配方式如下表所示: http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20160912-1473654611732080783.jpg6 [1 E, E! f- e3 z5 b8 N STM32单片机的外部中断触发方式为边沿触发,即上升沿触发和下降沿触发。/ x" [5 e; H4 _' B2 s4 ]( }: P8 S4 y 04STM32外部中断配置步骤 STM32单片机在配置外部中断时可以按照以下步骤来操作: 1.初始化GPIO为输入; 2.开启复用时钟,设置映射关系; 3.设置触发条件; 4.分配中断向量控制器,并使能;6 m) O% q: A! C, `" ^! y+ r 5.编写中断服务函数; 05STM32外部中断相关的寄存器 1.初始化GPIO时要用到如下寄存器:+ @! Z% ^7 | P* H0 L. e APB2ENR:开启GPIO时钟和复用时钟;: ]" G9 g) C# Y# l9 h) A, C CRH:端口配置高寄存器; CRL:端口配置低寄存器; EXTICR[0]-EXTICR[3]:外部中断配置寄存器 IMR:中断屏蔽寄存器; EMR:事件屏蔽寄存器;' j% Z s5 E/ r# M/ u FTSR:下降沿触发选择寄存器; RTSR:上升沿触发选择寄存器$ W- m4 o; ]- X4 H ISER[0]-ISER[3]:NVIC中断向量控制器; |
微信公众号
手机版