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

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

[复制链接]
STMCU小助手 发布时间:2021-11-24 13:24
Ⅰ、概述
, U- k' q# ~, |1 D' H8 [+ K2 OEXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种。因此,EXIT在实际项目开发中也是比较常见的一种。
0 B/ }2 H$ o; v0 KSTM32F0中外部中断EXIT属于中断和事件的章节,请看参考手册第十二章,但需要配合系统配置控制器(System configuration controller)进行操作,为中断分配引脚,详情请看参考手册第十章。
/ ~& s' T4 ]" f* r3 [5 i4 o' m6 u: g( T& N/ `4 U
Ⅱ、下载3 w9 L) z8 a- _: p, h
文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。
$ s  i5 H) G1 A  g( d& _% d" ]2 d; j* uST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。' y% Q, Y8 l: p9 {1 _; R" w
今天的软件工程下载地址(360云盘):0 y6 X, G% V) m4 a7 _- {( ^; K
https://yunpan.cn/cRJDddvF4hdXE  访问密码 f0af
; ?: r) O6 n, r+ |3 D0 |STM32F0xx的资料可以在我360云盘下载:  m' r0 i0 `* `$ \8 e2 B
https://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37
7 w" `' r7 Y7 {4 h
4 X) ^5 t* @1 ?' u# i; BⅢ、准备工作
6 U$ _3 @2 k1 Y" X对于EXIT的编程,建议大家准备F0的参考手册第十章和数据手册,方便查阅相关知识,没有的请到ST官网或到我360云盘下载。
8 V2 S) \4 {, Y2 ~9 S& J4 ?今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作。
: |5 m' ~- X6 T( h( y1 m6 n
8 {5 Y, [2 u# N1 e5 e+ x- X8 GⅣ、外部中断原理
" l+ d, ?8 h! P5 m  m  W/ ~  y4 h
2 V4 j, p. N7 J2 M" r  k" Z" j其实EXIT外部引脚中断的原理很简单,配置相应引脚为输入模式,根据电路看是否需要上下拉电阻,将该引脚通过SYSCFG配置为中断线,再配置NVIC,编写中断处理的事情即可。+ Q* v7 \6 H- y6 l4 d5 G
$ x' w1 O& c( [8 P1 I
20160608232459450.png
5 R9 V" G3 s4 R$ ?" N2 @3 a

0 g* ~0 O" `4 ^4 Q& v/ jⅤ、代码描述
2 V2 d, ?) C2 A/ a1 }! k1 l& U) I; H+ x4 D; C5 d7 `! E
请下载软件工程查看源代码,结合源代码理解总结的每一点。
  U9 a3 d# @8 D) }  f' z
. `5 Q  F& k! y( c4 R& A①RCC时钟# F/ l0 o+ K- h, z

  C! c& Z; o; p- \5 O: V) v
20160608232510661.png

4 V; \) X$ w9 d' ~& k
4 \- w# P1 O  K) Y4 u* R' _该函数位于bsp.c文件上面;1 n! ?! m- w4 R! N8 `' P/ d
0 V7 k0 }: d/ e$ v
我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于忘记配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。  ]8 h" g3 i+ y- m% G/ U7 w

1 P0 C9 L# m4 X5 Y注意:
+ d; x  U: }+ T6 v; Z
. v( I9 K( O3 H; }, R" c9 |外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);这样能编译过,但是错误的】6 o# c8 V+ u+ F( t6 V
4 n5 z& n: b% a7 S! P
我每次都提醒RCC时钟,是因为很多人就是因为时钟而导致软件运行有问题,所以,提醒更多人要注意配置RCC.7 M7 ?) C9 V0 I, l

: w* k9 b# |; j* t②EXIT配置. w" S+ S1 `2 `% K

% f1 U# }( [( w" J" H
20160608232517411.png
3 h/ w9 N5 [  @4 R! b' L( K( H
8 O0 U8 v2 \) b1 }3 ~( j7 E* ]
该函数位于bsp.c文件下面;4 V) U2 j* R* a
3 P3 [+ u  G' {+ ~/ t& I
注意:1 k4 d8 t2 F4 u
: w" i5 o- S' b( C: o; W/ V6 v7 v
该函数将EXIT分为三部分,引脚的基本配置、外部中断线配置、系统控制器配置,每一个步骤都需要,否则不会响应中断。
- w3 i: F  t8 K2 ?& ?
: m! O$ O8 ^" Z2 h' z) z& f% J③NVIC配置4 t2 }. q# `7 s  |' V; {

4 s; X8 L* k/ I3 q
20160608232529411.png
" N/ ]; h3 V1 y0 J$ ?

, `, {2 ?  {8 m9 u6 e2 M7 j4 |该函数位于bsp.c文件下面;
& f) C& a, ]4 _$ P. O# ?6 T
5 T  T, T# g. _1 h3 S要响应中断,就需要为其分配中断优先等级。
6 c4 K  c3 @2 U& M4 d% x- J  D; C6 p0 A4 W( R
注意:
2 J0 b5 h4 E( T' r
. f5 U7 S( f* ?/ ~" i6 H外部中断通道入口不是每一个中断分配一个入口,根据手册和参考资料可以看得出来分配为:EXTI0_1_IRQn、EXTI2_3_IRQn、EXTI4_15_IRQn;意思就是外部中断0-1为同一个的入口,其他原理相同。* p5 G" T: H: g
* l7 L- R, s% ~/ J1 T& t- o
④中断函数
& [  \) z( V. F7 N( ~: c3 Z$ S+ [+ Q8 a8 K# \. }$ M1 K7 L! ?
20160608232523770.png

$ ]3 E  B+ Z4 C) b5 h( _( S5 z
2 ~8 q% R) J% U8 A* B; X' l该函数位于stm32f0xx_it.c文件下面;
: @+ |) X. B2 `2 x# s" C! ~' ^+ P) T& k% k- s& W! A  m- J
这里我的操作相对比较简单,按键一次,中断一次。按下按键,延时消抖,变化LED一次,等待按键释放,最后清除中断标志位。
6 O! K' g) ?3 T* Y! B" Z" O4 N! s! |  f) I, O' e9 Z
注意:
: J! [+ i2 `1 ?- R+ R4 h
# e5 {; f. ?2 Z) W) j图中红色标记才是在实际应用中的重点,如果一个大的工程,有其他人也参与进来了,或者项目有部分代码是移植之前的,很有可能开启了其他中断,如果这里不加这一句判断,很可能程序会死在中断里面。
6 _9 w* l2 n: A, E) c+ Z! j8 m, d' S# D& A. Y& \
Ⅵ、说明
$ N7 Y3 K! ^: w) H) t+ h/ w
/ |' D8 g, x5 j$ s或许你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片,甚至是F2、F4等芯片上(具体请看手册、或者亲自测试)。
& b8 X. n! c% K1 S) Q0 y) [4 c4 X) f& `- K1 X' s
本文章提供的软件工程是基于ST标准外设库为基础建立而成,而非使用STM32CubeMX建立工程。个人觉得使用ST的标准外设库适合与学习者,STM32CubeMX建立工程结构复杂,对于学习者,特别是初学者估计会头疼。
0 c9 l( K; M8 J" U) Q  y- f
6 N2 P1 u  v; d$ C/ h今天的工程是基于工程“STM32F0xx_TIM基本延时配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。
5 k& B- I4 _+ w" J5 d* {) a
/ Y/ @' j+ ^3 n# p" f& p' T& W5 D# A9 o* R* z4 C
收藏 评论0 发布时间:2021-11-24 13:24

举报

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