
STM32的每个IO都可以作为外部中断的输入 % k2 M1 d s9 i: S! O STM32的中断控制器支持19个外部中断或事件请求 4 ?- s. ~" | q8 h6 N' F; X 线0~15:对应外部IO口的输入中断 I( ^6 ~8 P4 m! L" W( D/ z. R 9 Q; `6 s6 a( I: B 线16:连接到PVD输出$ h# [2 A! W+ t8 @& R4 G $ l* J k* C7 p- h 线17:连接到RTC闹钟事件+ B1 [0 ?: ~0 n 线18:连接到USB唤醒事件+ i& u2 b# m6 b- G1 p/ [ 每个外部中断线可以: 独立地配置触发方式,上升沿,下降沿或双边沿触发 触发或屏蔽 拥有专用的状态位 " A3 G$ }: Z2 l+ y) n7 m, |$ C9 h ![]() # V/ o3 {9 D* W- ]0 [' O 外部中断的配置 1. 初始化IO口为输入& Q1 O+ t: _# X$ W( B 2. 开启IO口的时钟,复用时钟,注意使能AFIO时钟 3. 将IO口和中断线进行映射,例如PA0映射到EXIT0中断线9 L- ~; }4 ]( }! q7 }! c% m ![]() & C( U1 ^' e7 V8 [& o' b- {# A ![]() 4. 设置中断线的触发方式4 f3 f( M5 }8 { ![]() . A: h) H G) j. u. K 注意:这种配置方法在嵌入式C语言中是非常常见的9 i- b% C" K2 D1 Q- u& ] V ! t* w* J: k& ~4 H8 n4 k' J ![]() 7 ]; Z$ Z* y! J4 A9 D: }/ a2 `- z 4 t: y. J) S/ i8 r: |6 ] 5. 配置中断分组NVIC,并使能中断 ![]() 7 ~8 o* |0 x7 P/ l( q8 M4 B 6. 编写中断服务函数 & F! |; X8 B3 v. v ![]() 1 }' U; @; S$ O1 k3 d 7. 清除中断线上的中断标志位 ![]() 2 ?- j2 Q- k1 u ————————————————3 M6 q# f) ?9 s, {8 N0 r/ i 版权声明:CodeForCoffee |