你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F0xx_EXIT中断配置详细过程

[复制链接]
STMCU小助手 发布时间:2021-11-24 13:24
Ⅰ、概述. C# a8 V9 Z6 ]; T  y
EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种。因此,EXIT在实际项目开发中也是比较常见的一种。2 C# B: J, f. j/ D2 ~
STM32F0中外部中断EXIT属于中断和事件的章节,请看参考手册第十二章,但需要配合系统配置控制器(System configuration controller)进行操作,为中断分配引脚,详情请看参考手册第十章。- |: j- V) K4 m: Q: t
: n: O' W) C' L8 \9 h
Ⅱ、下载
! w4 ^/ y* \" ?& \文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。
% O7 s* O7 m- G* H  W# I- bST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。+ p/ i' V9 `5 n, V
今天的软件工程下载地址(360云盘):% b8 J! A8 Y! q9 S3 L8 W
https://yunpan.cn/cRJDddvF4hdXE  访问密码 f0af% H- d9 u- ^8 p' A& z% F, L1 H
STM32F0xx的资料可以在我360云盘下载:
# U' i/ ]2 \; @2 r. Chttps://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37. `- v0 q+ I0 U; w8 L% f+ U* ~

9 I* E* F- }( N' VⅢ、准备工作- |# L8 v! a& s0 f
对于EXIT的编程,建议大家准备F0的参考手册第十章和数据手册,方便查阅相关知识,没有的请到ST官网或到我360云盘下载。* d. f2 ^8 X5 Q
今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作。
0 `$ S4 e3 m3 K4 H
5 n2 G- q7 ?- I1 TⅣ、外部中断原理
: A# A+ ?, _* P( V- G4 A
- E. k" J- D+ k其实EXIT外部引脚中断的原理很简单,配置相应引脚为输入模式,根据电路看是否需要上下拉电阻,将该引脚通过SYSCFG配置为中断线,再配置NVIC,编写中断处理的事情即可。: w0 v( a, U* `5 j# Z0 ]

2 D5 L- p# T, p
20160608232459450.png
  f' K; W/ p1 O. M6 ?& U5 H, d0 P
& \2 J# K: E) h, d/ T
Ⅴ、代码描述9 ~4 m9 z2 G: v3 F% u' n7 p

4 m0 b# L1 g" b- Y请下载软件工程查看源代码,结合源代码理解总结的每一点。5 H; k2 {$ R  K' P$ q+ Z% t, q2 m
' d" |7 ]5 F) ]. i/ K! W3 ]% b
①RCC时钟+ `: q2 p' f" s& B! b+ x

0 {) W" P) p( N( z' W
20160608232510661.png
$ E6 G  x0 {  }$ O+ x# e6 Y

- Z# i0 K" O& E该函数位于bsp.c文件上面;- f  f; L( x4 L" |1 I5 F: {5 Q

" ]* N! U7 R% B  v我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。5 S  i" |% ~0 i1 c( d8 ~* G+ o

9 H# y: b: M: u& z' |6 s; t注意:$ Q. K4 ]2 B6 V7 R9 G) \6 U9 L6 }
" R2 @, W1 T2 E6 @/ s( o7 \
外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的】1 t8 b4 g! R6 x' I( a  }$ g

5 T8 Y$ `! {/ d; ]9 C$ H  C5 g- Z1 H' ?我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC.+ k' Z6 O+ P) V  U$ a3 F% O! U5 {
) C: f: A) j2 k$ o" M- B- u( E6 G
②EXIT配置4 V+ e/ ^- _0 n% p# }1 @9 `) ^

. c/ ^1 Y1 W8 ~8 W5 B
20160608232517411.png
9 f6 p# U( c9 M
/ f$ \& Z" _1 N6 L0 R  ~0 e
该函数位于bsp.c文件下面;
7 z0 i( q. a1 h8 E: @
! H- N6 M+ T6 ?2 W注意:# y: Y; s1 B5 N0 |5 a# }& o

7 [4 k: u8 _  |8 K7 b5 Y该函数将EXIT分为三部分,引脚的基本配置、外部中断线配置、系统控制器配置,每一个步骤都需要,否则不会响应中断。
- R/ r, c2 q% p5 |! V1 C' X
" |0 c3 j1 l  K8 Q) [0 _0 H5 B③NVIC配置% o: e0 s$ Y* V. V' B( @. Y
+ I6 h' {. K0 R' ], k3 l
20160608232529411.png
7 `2 _/ j- _+ R6 k4 t

: |, H9 t8 M4 d& ]该函数位于bsp.c文件下面;
2 X4 W# k8 [* ~' L" S, C& a) V3 f/ J; a7 Q" n
要响应中断,就需要为其分配中断优先等级。/ f3 w0 I  v. [0 m) E) c8 f! M/ ~) n$ e

2 E; s) F, ]/ o5 ?# y) R5 N/ C注意:0 C" p* S! @1 r  Z! w; Z9 Q

. f% J" ]" @/ Y5 s外部中断通道入口不是每一个中断分配一个入口,根据手册和参考资料可以看得出来分配为:EXTI0_1_IRQn、EXTI2_3_IRQn、EXTI4_15_IRQn;意思就是外部中断0-1为同一个的入口,其他原理相同。1 l/ q; @2 B- S6 R2 K

6 B, T* ]+ S5 N! E+ s, d! K! H④中断函数
( j) K4 n" e  e* S6 Y7 }) g8 b! i7 n' e( s2 `/ c
20160608232523770.png
( E) [, G& L: [( M% U( K$ ?- E

+ `: S: t! a# D* ?7 g该函数位于stm32f0xx_it.c文件下面;$ m/ z0 W8 V! n( T- ~* K; \/ ~

3 h3 D: v+ V2 o) T' Q这里我的操作相对比较简单,按键一次,中断一次。按下按键,延时消抖,变化LED一次,等待按键释放,最后清除中断标志位。( d$ y) Y  p9 K* m* G8 K8 K
8 B7 ?4 x8 f7 v( m, Z6 a; f' S
注意:0 J8 s9 ~3 b( `+ J; h
! V( a, D9 Z' H- e2 y4 B
图中红色标记才是在实际应用中的重点,如果一个大的工程,有其他人也参与进来了,或者项目有部分代码是移植之前的,很有可能开启了其他中断,如果这里不加这一句判断,很可能程序会死在中断里面。
; K4 ~: T; _6 ]8 P$ N1 ?, v0 d" T9 r
) J" f6 k/ Q# M% z& E7 bⅥ、说明
4 r6 _' j/ [( o% m
5 W6 D+ u* Y2 p或许你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片,甚至是F2、F4等芯片上(具体请看手册、或者亲自测试)。
+ u( B. X9 \" W  }# X: W, K9 O9 B# o
本文章提供的软件工程是基于ST标准外设库为基础建立而成,而非使用STM32CubeMX建立工程。个人觉得使用ST的标准外设库适合与学习者,STM32CubeMX建立工程结构复杂,对于学习者,特别是初学者估计会头疼。
6 |' f* I( k6 C+ S, }2 U8 d
- u3 y8 r5 H  m$ `6 O" \今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。. U: A! k! E8 K# K8 y
- J# G5 a# W* K- V' ^: o: {
8 A5 i0 P8 P' e6 a7 A
收藏 评论0 发布时间:2021-11-24 13:24

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版