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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断" c2 t% [+ h* g! E1 j/ ]
  1. void EXTI_Config(void)- S8 W6 c3 z# J+ h( ?" R9 J
  2. {
    3 G$ o: f4 ~! u( f5 }! Y
  3.   EXTI_InitTypeDef   EXTI_InitStructure;! f1 g1 `* o7 B- `& y) |  E) V% p
  4.   GPIO_InitTypeDef   GPIO_InitStructure;
    * h$ ~, k' [9 p2 `* n0 ?2 @
  5.   NVIC_InitTypeDef   NVIC_InitStructure;
    9 ?% g/ ^; h* b: o; o: L$ b. P

  6. % h; K- M4 z& Y6 K. z: R
  7.   /* Enable GPIOA clock */
    " i( q# {3 Z; \% r4 d
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);/ N! e+ P6 Q& Q, i' e

  9. # u( T. X% J- L1 k5 \) p. U( u
  10.   /* Configure PA4&PA5 pin as input floating */( B% m; i0 \3 o! i, o  c  o
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;, R% t" i/ v& v
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;  h8 G8 J' D* N0 x
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    9 T& a$ r( y0 |0 k5 C6 g
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    . i3 j0 b8 c8 w" T. v# M" M2 i- r
  15. ( n- }( ]- R2 f6 h& r8 }* K2 h
  16.   /* Enable SYSCFG clock */# L% L& m0 b- O2 }* h- B( U
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    * h5 @, u% p  ]# E' C8 [2 `) _
  18. % ?- k, V2 H/ n
  19.   /* Connect EXTI4 Line to PA4 pin */
    4 w) F* D  ^3 s* J. V* D
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);% A* ]# X' G) T8 w$ n* \
  21. - }2 ^% N/ I+ p4 \) x* W3 N5 S( [
  22.   /* Configure EXTI4&EXTI5 line */8 u7 w' [; J0 y; B- Y
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;
    / n+ p- d0 t1 f" k! c
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;) w: J' p3 M- h0 }0 m4 K
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    9 x% T; u( l' z
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    ! N: o. d8 B  L
  27.   EXTI_Init(&EXTI_InitStructure);+ b, L, f3 ^; m) U: L

  28. , F) u2 X" O7 O6 T
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */: ~3 L/ i: P& Y+ k3 G
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
    " t3 H  w1 m4 G( T2 Q# i4 W1 U
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;7 k  |! c2 C4 A
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;& y( u7 H6 `$ x. \; V" ]
  33.   NVIC_Init(&NVIC_InitStructure);# K6 ~& W2 d, G1 d
  34. }
复制代码

! P# t2 k; n3 ?9 Q. k, C1 L, R6 U2, 外部触发中断函数
5 O; @# Q$ x- [# S8 i( N' _5 C
  1. void EXTI4_15_IRQHandler(void)
    * c4 v4 u. P$ C
  2. {
    3 W: `5 n; M2 @$ t8 C
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET)' c' P1 t$ y: S3 {
  4.   {
      N/ [4 W8 L+ B4 r* n) m) T
  5.     /* Clear the EXTI line 0 pending bit */& W/ I7 F7 Y5 d8 @
  6.     EXTI_ClearITPendingBit(EXTI_Line4);
    6 ?. u: B  h  E9 h& t2 D9 _
  7.         if(PauseFlag == 0)
    8 v; I, T. M) E
  8.         {/ A+ p; Y1 h* S9 j7 z
  9.             ExtiCnt++;2 b( g  {: ~9 c, M1 p% E' y
  10. ' ~( ?6 G3 E+ @! O
  11.         }
    & P: O* P" O+ k
  12.   }
    - d* V- m* h' f+ k. V
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET); i" ^& L1 ?1 S4 F9 Q
  14.   {
      r' w6 I5 d' z0 {) w( `" @* f
  15.     /* Clear the EXTI line 0 pending bit */" P5 w9 W$ W) O6 D+ r
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    4 b) I* n" W: E- ]
  17.         if(PauseFlag == 0)
    5 E1 D" b4 G2 k! ^+ H
  18.         {; l  }& n7 e; a
  19.             ExtiCnt++;
    9 z7 v) S! g! P  v: D
  20. ) B$ a7 K/ n$ \0 A( m3 s0 g
  21.         }
    % [4 y) U; i$ T8 h$ l8 m" k
  22.   }" L- r2 V: B9 n
  23. }
复制代码
$ J# g: r- ?. f6 {* d/ R
, b) r# D' A: r  y: X" k% W
6 `& ?: Q7 z5 ?; b
收藏 评论0 发布时间:2021-11-23 20:51

举报

0个回答

所属标签

相似技术帖

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