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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断
6 Z$ j9 J. Z, `* p
  1. void EXTI_Config(void)% m9 M; ~7 c% B. H% M' i
  2. {
    ' J1 q) `, p& a( f% `# l5 S: s
  3.   EXTI_InitTypeDef   EXTI_InitStructure;
    % v5 p2 y( s5 }6 \  N6 P
  4.   GPIO_InitTypeDef   GPIO_InitStructure;( |* A' {9 s) `5 C
  5.   NVIC_InitTypeDef   NVIC_InitStructure;$ j: U0 T& b6 T" u* O6 N
  6. 0 B2 R1 L5 u  O' z6 o! [! \
  7.   /* Enable GPIOA clock */1 E. u3 k/ D: i5 Y: ]5 L) J9 W( _' X
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);" d: R* j# F0 T& d3 q# L

  9. 9 J( V% R5 B1 @  D6 i, U
  10.   /* Configure PA4&PA5 pin as input floating */
    1 E9 x. }) s6 l" O6 n. R
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
    " k- a5 q: W0 L, l% v4 B
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;  g" H" }( O' q
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;# J7 v3 Q& @# o! X: `9 X; q( r
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    - H% a6 l& `/ y% I
  15. & A- H% N8 v% a+ ~7 I
  16.   /* Enable SYSCFG clock */3 ^4 N5 w% S( f
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    8 B5 f2 P, Z" p7 D+ `+ \

  18. / |6 D' x" n1 V2 v3 e2 [
  19.   /* Connect EXTI4 Line to PA4 pin */
    2 W6 B+ y- w2 K, B; V
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);' N. D4 B- F$ c1 t: ?& u# x

  21. 9 K& g+ N+ c: Q9 T( a/ l+ x
  22.   /* Configure EXTI4&EXTI5 line */- D9 }6 S, j2 P0 h. |# C
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;
    . r, p2 Y3 O5 A; C# H7 i+ u1 {
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/ I2 s& P. J( f# E. }/ ?8 s
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
      _0 s, q" B- |& p
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;9 Z) K, m) i4 m4 L* D
  27.   EXTI_Init(&EXTI_InitStructure);
    / \( L/ p% j) j- ]1 K9 f

  28. 8 R3 U5 T" D) H( d- U0 d
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */8 [" B5 L/ p3 \4 n
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;5 z) v: e% A# O6 H! I
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
    ) y4 R8 Y% r% s! Z% i8 x
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;( `. _6 u6 ]; |
  33.   NVIC_Init(&NVIC_InitStructure);" x8 [2 Y3 m- |/ I  k1 W9 D( f- B
  34. }
复制代码
% s& u. X" ~( i0 r: b; m; {
2, 外部触发中断函数6 b  p$ [$ }2 l3 F: h
  1. void EXTI4_15_IRQHandler(void)" S) y/ }- o3 Y$ b+ e
  2. {
    7 [9 Z( [' c# u/ o/ r
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET), F: C7 ?- k; y
  4.   {) f8 U" B+ K1 S
  5.     /* Clear the EXTI line 0 pending bit */3 E' C, O- E5 g$ A7 S, U  `
  6.     EXTI_ClearITPendingBit(EXTI_Line4);6 m" w8 o7 |" q* f4 W
  7.         if(PauseFlag == 0)
    8 ]+ V9 E; @7 s' U
  8.         {
    ' d4 E; D2 y, i2 i- M2 C6 y8 t
  9.             ExtiCnt++;* v* z& ?6 H: I$ J# ^. w" n# S
  10. 4 @  A# v9 \; |1 T% j8 h/ J
  11.         }* W* X1 H7 v" l- O4 T+ F4 j
  12.   }
    0 v/ E# C% q) h& {8 V( m- s( S
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)6 R# D- W- w! P; i+ }% G% u
  14.   {  ?- H, a" C% W4 r
  15.     /* Clear the EXTI line 0 pending bit */5 Z: v0 t7 _5 h2 g1 A0 @7 Q7 |
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    ( t- ~! N* @* y0 v4 Z7 K5 o
  17.         if(PauseFlag == 0)
    $ |6 x, K/ U6 O/ B
  18.         {0 X, {6 A; y8 b: u. Q
  19.             ExtiCnt++;0 r4 i; p' l, Q( f
  20. . ^7 n9 v+ C5 R' u7 C/ E
  21.         }
    . V6 ~, e+ T& {9 ]* R, b
  22.   }. M$ t3 I' J3 L5 P7 u
  23. }
复制代码
* z' l" V8 d6 n2 w$ M1 q
- }- L9 e/ n# @  h

+ N  q3 D: w3 \* b/ }% o
收藏 评论0 发布时间:2021-11-23 20:51

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版