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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断/ [( |- a1 u9 t; x# |
  1. void EXTI_Config(void)! S) Q  I# r0 J. I' i/ `
  2. {
    6 }5 ~/ C7 J; U  D$ ?
  3.   EXTI_InitTypeDef   EXTI_InitStructure;7 J9 ?. b4 B; T
  4.   GPIO_InitTypeDef   GPIO_InitStructure;; `' P" H3 J# ^/ K: n
  5.   NVIC_InitTypeDef   NVIC_InitStructure;
      l8 \& q) E7 P, r) Y+ T8 I; S

  6.   c& R( W- O) P! `
  7.   /* Enable GPIOA clock *// ~( c% s5 ?3 P% N4 F8 H9 N: p  W
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);
    % j3 R, j' I7 D, M  ^

  9.   E: \! K1 q* {: @. S  C
  10.   /* Configure PA4&PA5 pin as input floating */
    ) R2 W$ T4 C# d, ^/ I) B
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;  I$ x. a) w- j4 r2 V' E
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;& Q9 T& |% D6 e
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;4 s& q' n& m; p+ h( _! `9 i
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    , J+ P6 U( ^7 _' `
  15. & l/ `  \* u" `1 W$ \% N
  16.   /* Enable SYSCFG clock */
    & \% P- b# _' B" p* x
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    / r7 s) ^! A  h4 q8 p

  18. & }$ c6 R# ?0 e  k2 x3 z; V
  19.   /* Connect EXTI4 Line to PA4 pin */' i; {: x5 Q- q6 X
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);. s0 d# S: ^" d5 o9 U# j

  21. ) e, C( C- V9 ~; m% ^7 V# E2 v
  22.   /* Configure EXTI4&EXTI5 line */
    , h  X# P7 H4 Y5 I' Y
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;# k, d/ K. ]. U; B
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;5 a/ l, y+ R" d6 A
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    $ p4 k8 f8 E3 i* a+ U
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;$ H+ w8 J. x8 v  M- J1 _
  27.   EXTI_Init(&EXTI_InitStructure);* o! J! L+ D( p3 P# V) {
  28. ( ?- o/ J( M1 F. t* s# C+ i
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */3 L" _, |7 w( H5 w$ G
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
    ' A+ f( B4 X( H' s$ K. ~* \
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
    " H% u1 l# W2 U3 _& X
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    3 J. u7 a% m2 {& |
  33.   NVIC_Init(&NVIC_InitStructure);
    8 k8 E6 h* ~3 ~1 A* J* Z
  34. }
复制代码
+ f1 \; }- q6 \2 a" i/ R
2, 外部触发中断函数
4 `/ l* z$ J6 E/ W- }
  1. void EXTI4_15_IRQHandler(void): t' k/ [! M! [, Y. H( k
  2. {) Y) X9 I7 M6 H
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET)
    ; b: k& k4 a* Y" Y% w6 r) o# y6 j7 h
  4.   {
    & F) G7 g1 F; \5 V" a) e" X: l
  5.     /* Clear the EXTI line 0 pending bit */4 n+ |; p/ e+ Q2 `$ `
  6.     EXTI_ClearITPendingBit(EXTI_Line4);( N! ~. q, @# S- h- j# a
  7.         if(PauseFlag == 0)' d* K  d1 i( W& z9 m
  8.         {: V% y9 r# p1 v( Q4 N, ]
  9.             ExtiCnt++;* V4 P: m2 O7 h8 T0 }( [. r

  10. * u. _8 g, p) G( h' Q( r
  11.         }
    ; M4 R, \$ Z( M/ A
  12.   }, @7 u' k" s, N  X) X, |4 L' j5 c
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)8 N# O9 z7 Q2 r8 T' K, t" y9 _
  14.   {- ?- l' Q; J# [8 I+ L# P
  15.     /* Clear the EXTI line 0 pending bit */
    $ d" a; h6 B+ o2 j
  16.     EXTI_ClearITPendingBit(EXTI_Line5);3 B2 K) K' F$ }# ~9 p
  17.         if(PauseFlag == 0)
    , ?$ n9 d3 ]2 O
  18.         {
    * ], W% Y0 A. ^# ^1 a+ H- a
  19.             ExtiCnt++;. S0 M6 l# t. h* B0 |9 {6 Y: |1 w2 o
  20. & D8 g8 E- v8 d* S
  21.         }
    4 a* H2 @- {  A, G( T% `( _6 r. J5 M: X
  22.   }9 Y! |9 j9 n+ R8 S8 A
  23. }
复制代码
; E. `+ ?# r# F

* ?& X4 l4 \, e/ v9 R$ @; H
; A, D# C; X- L# `& e
收藏 评论0 发布时间:2021-11-23 20:51

举报

0个回答

所属标签

相似技术帖

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