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

【经验分享】STM32F0 外部中断程序

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断
0 Q! [+ y5 b3 [" o" f" |7 n3 ]
  1. void EXTI_Config(void)" n# z; d" g" L+ K1 R1 `0 Q
  2. {+ P3 z5 p/ s+ J
  3.   EXTI_InitTypeDef   EXTI_InitStructure;) [; N" `4 V% u( O# v
  4.   GPIO_InitTypeDef   GPIO_InitStructure;7 E- m* [! b. z7 m
  5.   NVIC_InitTypeDef   NVIC_InitStructure;, P3 H. H% J2 @4 n
  6. ! a- G3 ^: u  G& M4 c
  7.   /* Enable GPIOA clock */9 y3 L' Z2 t1 O  o
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);
    . u$ j( Y! G! ^" C- J$ F+ [
  9. 1 f$ M! W. D; h; p7 H
  10.   /* Configure PA4&PA5 pin as input floating *// S' G, h5 h) z/ o
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;; `  n& `$ d/ Y% |* x: Q
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    + _& V4 C' ?' t4 [& {- x
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;$ e/ m/ h. ?, R6 Q3 X
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);( f1 e- _0 _4 Y$ I: r$ Q7 i( O
  15. " U3 n6 X# r* H" d9 q) f  E
  16.   /* Enable SYSCFG clock */
    " C* X" W- O; s+ P
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    5 o, ^6 A, C7 P) S
  18. % n5 y0 _% u5 s
  19.   /* Connect EXTI4 Line to PA4 pin */5 @  K$ @+ ]2 T& K# l! O8 i. [
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);
    % J4 w+ d0 i; f. e; _
  21. , K8 P& J) n& L9 M( n* ^- Q. I/ `
  22.   /* Configure EXTI4&EXTI5 line */
    ) J+ P, O% k; d# F9 c
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;6 `% B- u( _0 U) A% [) n% i
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;# ?0 L  k! f3 _9 D( z! u
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;* @3 V; g& {: k2 n: a
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;' V* g& q* t. K+ D! F9 b
  27.   EXTI_Init(&EXTI_InitStructure);- |. v  g4 a/ _0 M, v; [+ I1 `; X  Q
  28. 4 @, Z  u' [* b- a% F
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */
    0 g/ L, o; Y+ \; h7 y" J
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
    $ P  G' v2 ^- T! T2 J) y0 y7 M
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
    ) y  Y/ t) M: U
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;$ [3 M( m- K: U: k1 D
  33.   NVIC_Init(&NVIC_InitStructure);' e0 i! @: Q5 s' x. U
  34. }
复制代码

* V4 J- D& s" l/ L7 U) e, `2, 外部触发中断函数
  N, E( H! T" g- m
  1. void EXTI4_15_IRQHandler(void). @0 P  f) B8 D  c; t
  2. {
    / c$ Z1 {% T( }; \- s
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET)
    ( E/ }0 H  Q( M, v3 l# Y' j1 m7 @
  4.   {" v  _' E7 d' D+ j4 F% j; X& F
  5.     /* Clear the EXTI line 0 pending bit */0 d: b+ y+ [. Q& v6 s: ^# }
  6.     EXTI_ClearITPendingBit(EXTI_Line4);  F; R; N- ?% m0 N" B$ p
  7.         if(PauseFlag == 0)
    8 D/ N) u, s4 h$ Z; z) F. A
  8.         {
    . R# D. I- j! |  v. Y
  9.             ExtiCnt++;
    ' E, l  ^3 G3 x4 }, w1 h

  10. - J/ J) K3 i+ y6 p- `- G
  11.         }1 T  u* v1 z8 C* {9 U2 B
  12.   }& o7 f- j* g5 Z, y5 }2 f  W& \4 e- A
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET): A- a1 _' l' O7 R! f6 b6 x7 T* ^
  14.   {5 i' g2 V# k$ K3 @
  15.     /* Clear the EXTI line 0 pending bit */- g+ b3 I  F. f) L& _. w/ b# o
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    4 C. G. O2 \4 E+ b6 |/ `# S
  17.         if(PauseFlag == 0): n1 I# ~) k! x! @/ C( {$ E* u
  18.         {+ K+ I. a' i% W6 f8 K
  19.             ExtiCnt++;
    1 K, U6 \+ ~' @( P* x, O0 O5 t

  20. " Q3 p$ ]- A+ P3 W; e4 R! w
  21.         }
    - C* \/ V" P+ n
  22.   }
    0 _9 w2 ?) l6 u6 _. d
  23. }
复制代码

  W7 o- P# g3 i4 p# b
7 r4 J9 @8 a1 c2 Y3 P* G2 w" u! `& n" L
收藏 评论0 发布时间:2021-11-23 20:51

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版