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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断
/ Y: i2 r; F8 [! A+ ^
  1. void EXTI_Config(void)
      B( g/ _. Z& ^- B) q: N. x5 J3 y
  2. {
    7 {+ @! n8 [: a* C
  3.   EXTI_InitTypeDef   EXTI_InitStructure;
    ) l6 w, h4 l" Y& k
  4.   GPIO_InitTypeDef   GPIO_InitStructure;2 r# ~2 ?  R! X2 `. g6 Y7 o9 c
  5.   NVIC_InitTypeDef   NVIC_InitStructure;
    # l% b4 u( Q2 s
  6. 6 A6 f& E9 l+ P; r
  7.   /* Enable GPIOA clock *// d: H7 a* k; Y* ^
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);
    , e8 N# d! x, K3 L! x) s  }0 y. B! D

  9. , P0 V' r! |# b( J
  10.   /* Configure PA4&PA5 pin as input floating */; U+ f1 W' o' W) _
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;  L: r+ e' c0 A+ S! V3 f
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    % I( s4 h# g$ C3 g7 @8 {9 S" `
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;' _* m2 z+ n, Z0 Y& Z
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    - G1 P, W" I) E& X- K$ u* V% Y' d
  15. / ^3 M/ j8 n2 p  e" D7 |
  16.   /* Enable SYSCFG clock */
      r$ \4 D; o6 M& B2 `
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    8 P% P, j  S4 j: p1 @& ?+ q

  18. + |, B2 g. {# N) M( h
  19.   /* Connect EXTI4 Line to PA4 pin */
    ( n- h8 M) e9 P) F  t$ u5 j
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);
    % V( e* t+ h! w) b. Z% |
  21. % \* y" ^* B" X+ D7 F$ n$ r
  22.   /* Configure EXTI4&EXTI5 line */5 Y: w3 Z& w. V6 H: n
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;- H! k+ _) j: R0 [
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    # o! O* e; ]. A# n
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    ; n6 H- t& W& U0 ~& \3 R7 X
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;9 I' y+ t+ G. B' j
  27.   EXTI_Init(&EXTI_InitStructure);
    : g2 d, L; q% _( f2 q- b0 m0 d
  28. 5 f5 I" g7 b. t- a4 }  e; b
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */
    : [$ D" `8 N' p  W) F' s
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;/ c: L; @) q& h
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
    3 N6 p, G& O% \% X& _
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    2 q8 F: B5 E4 Y  _' G, |
  33.   NVIC_Init(&NVIC_InitStructure);1 v& y) I9 l# ]/ H* l" G8 c! @$ h
  34. }
复制代码
5 |8 d) D. @; e0 i; F% W7 Z
2, 外部触发中断函数
) Z/ Q# {: |$ f# t; D7 T" `
  1. void EXTI4_15_IRQHandler(void)9 p! B2 B0 B" n0 _& A4 J
  2. {
    # u) @+ I! j) k; Z* y
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET); k/ p  U! o7 `
  4.   {+ Y& L! T$ a6 e
  5.     /* Clear the EXTI line 0 pending bit */
    / B* O/ H+ b; H( `; U
  6.     EXTI_ClearITPendingBit(EXTI_Line4);: O6 y; N: l7 Z, \: w) ]
  7.         if(PauseFlag == 0), V  N9 Q/ }% L) z5 X( l
  8.         {
    ) {& l+ U, }' x9 P: P3 R
  9.             ExtiCnt++;
    8 f, Z' b: t" J6 G! H3 \( s
  10. 1 N2 I( z! r- s! s9 a$ T/ [/ e
  11.         }
    ' I2 i( `; U" J/ |3 `  M
  12.   }
    , [2 v& E+ L$ Z( a) }0 a
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)
    . l+ y2 j1 O6 P
  14.   {
    . u: g! [/ p% C$ E; H+ E' P
  15.     /* Clear the EXTI line 0 pending bit */
    , N: ~1 w3 o0 w3 A' P+ N
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    " U- u- e  x- Y3 d
  17.         if(PauseFlag == 0)
    ) O$ K8 S: N# h/ c: m
  18.         {, e2 V5 L1 M  P% N
  19.             ExtiCnt++;/ h' R1 {! C: a# F0 ^$ N3 b

  20. % @: o" U+ c' f$ o' n5 [; P
  21.         }
    . k" @9 `& B0 t! B" T: Y$ L+ ^
  22.   }
    . q7 T9 K, t$ c
  23. }
复制代码
" p3 T8 ~0 r: p+ ^; V6 Y
+ U" S, l, G) G# P" F

% ~( X) T! ~! Q1 _; i
赞 收藏 评论0 发布时间:2021-11-23 20:51

举报

0个回答

所属标签

相似技术帖

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