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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断
. H1 a8 F1 x: U% p! e- D  r
  1. void EXTI_Config(void)! u9 \/ p, q1 e0 R# f
  2. {+ r5 r, T; V5 _( T
  3.   EXTI_InitTypeDef   EXTI_InitStructure;
      z: u! U% {* J9 S
  4.   GPIO_InitTypeDef   GPIO_InitStructure;7 i  q1 R. Q$ ?6 v$ K3 B
  5.   NVIC_InitTypeDef   NVIC_InitStructure;
    5 n" s+ \: a- W7 x

  6. , H% J& X9 e. C
  7.   /* Enable GPIOA clock */
    + j' `" r( a5 b+ B' ]" Z
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);9 t  S; C' w0 h0 ]8 e3 z. P
  9. 1 e6 z% D/ c/ d" L+ r/ N
  10.   /* Configure PA4&PA5 pin as input floating */
    3 y- s4 m/ X$ X1 ?' Y, y
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;" `3 A; d$ u" }" q
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
      }5 w* C- Q2 @
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;9 `4 Q' i* ^) V* h% y2 [2 |% I5 w
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);2 T- [9 q% u3 w" L, D6 K! E: z/ r
  15. 8 d& ^; g; n* ?  X) z
  16.   /* Enable SYSCFG clock */- x1 r- D9 C( B# k* n6 H
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);7 E' D1 b1 R7 ~4 N8 P
  18. # O& n* ~" [( Z' d9 r5 i  \4 }
  19.   /* Connect EXTI4 Line to PA4 pin */% N' {2 Q# s4 w4 d. F8 h
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);/ ]/ l' `! @' J' c9 A- y7 h+ I" A# _
  21. 0 r6 I" h/ {! f" x0 M0 Q* F
  22.   /* Configure EXTI4&EXTI5 line *// H  a( F! f3 }$ E- T) @
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;
    ) s* O% h- n& X
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;6 n; r: s$ D6 }9 c6 ?
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;" L7 O. k& B! B3 I$ V. X3 U
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;( V6 C2 B. j* T. U# f2 ~# u1 S
  27.   EXTI_Init(&EXTI_InitStructure);; J; N" h" q. F' ]9 i

  28. ! y& `; u& M# r3 w+ M4 c  |
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */3 k( o3 c$ ]: K- e
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;5 y8 W& i/ Q4 }8 V6 P# Z$ Z
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;5 F& k" e/ t, h4 G+ ^2 M2 D
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;. m! T  F( O8 o7 d
  33.   NVIC_Init(&NVIC_InitStructure);
    ; Y" {! F2 F; `/ P/ M
  34. }
复制代码

% Q8 B$ g; Y4 r2 r8 x2, 外部触发中断函数
1 o/ G: W( O0 Z+ q) W9 P  ~
  1. void EXTI4_15_IRQHandler(void)0 I& [3 F' U( b
  2. {; A' z" K6 L9 s! C4 z
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET)
    : B5 l  j5 d) ^6 U8 w% `
  4.   {
    , D7 F! }* G; e: \
  5.     /* Clear the EXTI line 0 pending bit */
    # o8 ^4 E4 t* Q1 P+ ^0 d" `3 B
  6.     EXTI_ClearITPendingBit(EXTI_Line4);
    / F) k. B5 c4 g" {& K( H
  7.         if(PauseFlag == 0)
    5 q+ U. O! |: Y
  8.         {
    & ~/ j8 K0 G: l$ ^; O* ^
  9.             ExtiCnt++;+ a- g( c! }; o# L% r& E
  10. # D7 L% k* ^  u9 f
  11.         }; r- G8 E( e5 d9 p* r" c2 W8 y: s  w
  12.   }
    % p. @2 {" p/ ^4 n; h' F
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)) A6 [7 r4 F+ u
  14.   {( P, r7 G8 `9 [/ d% {8 K* l
  15.     /* Clear the EXTI line 0 pending bit */
    ) R$ c* l' `" R5 B3 D. T
  16.     EXTI_ClearITPendingBit(EXTI_Line5);6 w  S1 A/ M; Z9 O/ X
  17.         if(PauseFlag == 0)
    1 T' w0 F% J% D' v9 M& ~. h
  18.         {5 B7 A: {* b% k  J( W
  19.             ExtiCnt++;
    : c% D! H, @2 Q3 @) i5 A$ e- p

  20. + P8 u) h; I$ _/ g7 W# D
  21.         }( a+ s) `, c$ }. m, H4 C" j
  22.   }
    # Z8 k1 U( I0 i7 h& s
  23. }
复制代码
' x/ M6 W% i( n3 f' n" f& j
1 C2 r4 `0 _5 S: x  s
9 {6 \8 B# h0 j9 }
收藏 评论0 发布时间:2021-11-23 20:51

举报

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