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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断. k; `7 w6 ~. `
  1. void EXTI_Config(void)
      B% ~$ R3 m, G* P4 n
  2. {
    8 y4 t6 ?( X+ ^5 U$ F# o+ z
  3.   EXTI_InitTypeDef   EXTI_InitStructure;0 n7 N( U- D3 g/ ?  g; o
  4.   GPIO_InitTypeDef   GPIO_InitStructure;
    7 }1 T  I/ e/ ^( G2 ?, W% M: U2 [; [
  5.   NVIC_InitTypeDef   NVIC_InitStructure;
    . e+ e0 s- E" j* C  L' X

  6. $ U2 m9 R+ g! r4 w
  7.   /* Enable GPIOA clock */
    ' E; x& h* ~/ u; W7 @. L
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);  V. C" _: t: s7 q. t9 d/ }

  9. 9 A  K4 K) G+ h* \0 j' G2 _& P
  10.   /* Configure PA4&PA5 pin as input floating */( j- y- a; ?( g- s" W% j' }
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;1 n& F' V$ ~4 b3 _7 Z! k- F1 i# {
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;9 _  G# E$ H0 |* l
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;9 v6 L, C7 R: L' w" b5 [" d: r
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);. V, s3 x4 ^# O
  15. ' z- U: g& |$ B2 }1 x" S$ {) l
  16.   /* Enable SYSCFG clock */
    : g4 j  t! k; g9 ]9 K( W$ u
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    % Q. Q  C" o' i4 t% t. r

  18. # n4 Y3 e. z1 I; ]% y8 `
  19.   /* Connect EXTI4 Line to PA4 pin */" r/ h- h+ t5 W3 c
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);
    % X% Y+ [; M4 _* w3 F* a

  21. - `! \6 s, t+ o3 Z- C, i* }
  22.   /* Configure EXTI4&EXTI5 line */6 O: r+ S& G, U- ~8 p" X; P: j
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;& H5 D% j; a0 J9 ^& R2 i4 L
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;, |5 F& q' Z# T; @7 j7 N  I
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    * _4 w1 i3 @- q- H9 Y, ^6 a8 J
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;, g% j8 v2 V$ _7 F: O
  27.   EXTI_Init(&EXTI_InitStructure);0 C: s( Y) h6 V0 t3 k9 R$ W

  28. 9 D2 m6 l$ o0 `( \  y% l$ n6 V
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */
    . u) m0 J. d" v( @( n
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;% B7 A+ E1 Z8 d) r% i: w( G! F$ I
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;' G3 {* k0 ]; i! b6 q: n6 e
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    6 J. L& {# H- N+ O5 d
  33.   NVIC_Init(&NVIC_InitStructure);
    + n# P. x9 ~, O! O! r! @
  34. }
复制代码
2 |' n* v: G7 o6 _* _' r* D# o
2, 外部触发中断函数3 Q8 R# _" ~& `9 J
  1. void EXTI4_15_IRQHandler(void)2 k1 F5 j$ ^( a' n3 G$ t7 A3 ]
  2. {
    ) _% x0 D# l- G- M# V' p
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET); a% O' ]/ `1 N8 w
  4.   {& M- P* R1 {9 d5 ?& [
  5.     /* Clear the EXTI line 0 pending bit */6 u7 ]% ]9 h- n* u& _
  6.     EXTI_ClearITPendingBit(EXTI_Line4);9 |9 }! Z5 f. H" Y3 J2 Q
  7.         if(PauseFlag == 0)
    8 [' |0 Q) l; B$ U( p* D4 s0 z) P" }$ O
  8.         {
    5 m- o* A+ o$ \5 K
  9.             ExtiCnt++;% W3 u7 r) ]  t5 ?/ c5 T( a' S7 s
  10. + ^, s; K& q6 _  q6 Y1 c8 n% K
  11.         }
    / O% s& D% c1 C6 j! O
  12.   }% @$ {1 `" G. l) g( O
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)8 R: r3 V0 y4 o' V) i5 c' l/ q
  14.   {  f3 b2 |( B- u, A
  15.     /* Clear the EXTI line 0 pending bit */* {7 C) m# @! ~6 k5 H
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    / {1 `0 W1 P/ ^( {6 j
  17.         if(PauseFlag == 0)
    4 a- E1 K7 M! H$ c& c
  18.         {
    ! X# ^. [; S, [' h
  19.             ExtiCnt++;! ^0 g2 u( M! k5 M2 a
  20. " o. M; t9 T; M( e
  21.         }2 `# f0 O: I0 l' ?/ \/ m% u
  22.   }
    # R/ Y2 J6 t* c: E% r. i
  23. }
复制代码

- x" z' I. p4 U8 R: |+ ~% A# x* E8 Z' H; ?

" x9 I: J. |, [# B
收藏 评论0 发布时间:2021-11-23 20:51

举报

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