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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断5 w6 f6 |+ W8 Y8 ], O! H+ i
  1. void EXTI_Config(void)
    , M3 o+ O0 _  t) x6 n* h0 a
  2. {
    * ^7 l2 j, y1 y# f
  3.   EXTI_InitTypeDef   EXTI_InitStructure;
    ( b1 Q/ z' X3 ~- i2 D7 L) t
  4.   GPIO_InitTypeDef   GPIO_InitStructure;
    ( p7 i6 M( B$ N2 Y9 f
  5.   NVIC_InitTypeDef   NVIC_InitStructure;+ K9 z4 D7 y# }9 ]6 s

  6. 8 ?1 q/ y4 l1 ?* Q
  7.   /* Enable GPIOA clock */! o+ y* J$ ]4 e( X
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);/ H. p, K9 J5 q% W! ]1 l

  9. # L; I4 r/ c+ K. b
  10.   /* Configure PA4&PA5 pin as input floating */
    1 ?3 X1 |8 ~- y: p" [3 x
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
    ' \4 A) P6 ?5 |# f3 j/ P
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;8 @  `; d- ]3 r
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    # t: g3 P3 y. P+ N" R# D  M! T: c7 a
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);, E; ^" W. i# i3 ~0 |- u+ o$ _" O

  15. 5 j$ y' b* J" k0 H+ I
  16.   /* Enable SYSCFG clock */, [; E5 s! _  E  \# i8 z9 q
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    ! j7 V; }2 A* I) `; \2 A) y( l
  18. 7 h: C* n5 [6 h
  19.   /* Connect EXTI4 Line to PA4 pin */: d5 l' [" w$ N+ L3 G5 |
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);3 ~" e$ v9 k+ N7 P

  21. ' U/ p1 X" }" x, g
  22.   /* Configure EXTI4&EXTI5 line */
    . Q3 I# D! G' z$ D2 T0 c# C
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;7 j" m4 R6 j2 [, r1 I
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;8 t/ V) V4 J8 A1 l
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    % Z0 A5 B& P0 j4 W+ \
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;3 }" Y3 ?3 |$ t/ a- a: v
  27.   EXTI_Init(&EXTI_InitStructure);% y9 j3 g6 m7 c. P

  28. ) _, v+ r3 p& o3 s! V6 \( N0 C' [
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */
    : k3 r/ m: K8 f1 ]  ?
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
    - ], U$ N' {& y( E$ L
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;: r- s+ c  u$ O0 o7 G
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    + u5 O7 @8 `2 [
  33.   NVIC_Init(&NVIC_InitStructure);
    6 _  F6 M2 x) R+ ~* ]1 T* W- x& [
  34. }
复制代码

- K- `4 N/ z6 C6 _2, 外部触发中断函数  K3 w6 o+ ?. @. ~% H
  1. void EXTI4_15_IRQHandler(void)& p. ?3 e8 y' m7 d0 f
  2. {4 f1 }  x& L+ n1 s5 b, I" u4 t
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET)' \0 h/ z! p9 b
  4.   {4 c! z+ l' A, J7 }. ]
  5.     /* Clear the EXTI line 0 pending bit */
    ; `( T2 V" g  C& g
  6.     EXTI_ClearITPendingBit(EXTI_Line4);
    ) T+ v( d9 l/ m  a- }; b; y3 Q
  7.         if(PauseFlag == 0)1 G! Y; C  n: w* F, i' F
  8.         {
    : L4 K2 g4 N+ i) D8 ]
  9.             ExtiCnt++;
    8 B5 z. m. [6 H  S
  10. # o, X" n  E) d& B
  11.         }
    : j" \9 H( z+ E7 R  E, U3 O
  12.   }
    ! k  m8 E4 w! g1 q
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)
    1 T: L$ O2 ^; B+ `9 _0 S% O: h4 D
  14.   {; {9 B' U: `. T# [! n3 w; d9 @  C/ C
  15.     /* Clear the EXTI line 0 pending bit */
    . P% y. T! a6 t8 p. ~$ Q2 v7 `
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    0 G. t, C. G* Z
  17.         if(PauseFlag == 0)
    & d0 W  _6 x* q+ ~
  18.         {7 ~. a! t1 K* f& p1 |  x- e& a
  19.             ExtiCnt++;
    1 a( }1 b/ p6 A$ r/ U- o
  20. + y( g. u% ~8 O: F2 ?
  21.         }- T' H# U. n2 }5 |2 o( j# f
  22.   }" a( _3 v! w1 I  P7 l4 @
  23. }
复制代码
  I) M( M0 _" M4 _; [) R+ A' E

0 N7 L2 s4 ^# {# N: F3 x# U0 P
3 q2 F0 v6 f7 p: [1 _) J0 p1 l
收藏 评论0 发布时间:2021-11-23 20:51

举报

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