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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:51
1. 配置PA4,PA5为外部中断! c" L9 K! G( G6 r, _
  1. void EXTI_Config(void)
    ! K" w. A* P5 h+ P# L2 b
  2. {) V5 w; b1 y! M) I- R# |
  3.   EXTI_InitTypeDef   EXTI_InitStructure;
    2 h3 ~/ y6 x1 t
  4.   GPIO_InitTypeDef   GPIO_InitStructure;
    . v0 s  O6 E8 _* z! v1 [" {
  5.   NVIC_InitTypeDef   NVIC_InitStructure;" z: y4 m5 ~$ T# c; [  S

  6. 4 S, @7 N) Q- q% u. _$ d' c
  7.   /* Enable GPIOA clock */" G& e1 @5 R. B2 j. c
  8.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOF, ENABLE);
    , B* {0 [* }( S+ h) E2 G; s

  9. 9 `' w6 |8 b, s: W: h
  10.   /* Configure PA4&PA5 pin as input floating */
    ) Z0 B& t0 @( p" D
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;  T9 O1 f8 o4 N$ I
  12.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    4 e% `( s& L, X5 p0 ?5 e
  13.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;  b8 w! x- v0 e! j3 H$ b
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    1 ?7 }% I4 X+ C; i0 O) f/ m' s

  15. % P% M% G1 f. \. y' I' w. H
  16.   /* Enable SYSCFG clock */$ F3 S! a) _: I- G; F+ n0 G7 f
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);  F4 m: z3 g, D* L' M& L

  18. $ [2 G! t2 ~7 }# T! T  e  A
  19.   /* Connect EXTI4 Line to PA4 pin */
    ! W# E! C$ n2 A0 X* a  ~7 q
  20.   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4|EXTI_PinSource5);" N. N+ g# p* w% ?

  21. 4 r: c% l6 l7 a/ C
  22.   /* Configure EXTI4&EXTI5 line */7 t- w' W! _/ D% i3 O& j. ?# P
  23.   EXTI_InitStructure.EXTI_Line = EXTI_Line4|EXTI_Line5;
    ! A' l$ t' b" |. Y- a4 h
  24.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    ! E' p0 E" Y% M. l: y! ^4 E; W
  25.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    . k9 f; K& I: _4 v
  26.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    : j( b8 G% C6 r% C5 \+ C" h
  27.   EXTI_Init(&EXTI_InitStructure);9 t" x6 b. [# K
  28.   j4 m4 q0 s. B5 \  o
  29.   /* Enable and set EXTI4&EXTI5 Interrupt */# x+ |1 [/ V/ S) V# s
  30.   NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;7 B+ U$ y5 d- R" @; ^0 u
  31.   NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
      {* _' s8 e+ G  |1 x# C8 H, ]
  32.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    9 s, w" q8 y* t0 e  v
  33.   NVIC_Init(&NVIC_InitStructure);' e5 j0 O. X, s
  34. }
复制代码
  H8 P, M4 A, b8 Z- `8 l
2, 外部触发中断函数
- d1 C; p" X2 P# i& Q
  1. void EXTI4_15_IRQHandler(void)
    3 \9 y! c" a6 ?3 D
  2. {
    + o: m, N3 k# c/ m% v
  3.   if(EXTI_GetITStatus(EXTI_Line4) != RESET)& g0 V$ [' Y7 l
  4.   {- ~; E8 h2 T8 x2 k, A; m
  5.     /* Clear the EXTI line 0 pending bit */
    ! _, }$ g! h. {
  6.     EXTI_ClearITPendingBit(EXTI_Line4);
    : t7 B- F0 q. L% f) x4 Z
  7.         if(PauseFlag == 0); `6 @3 u1 y! f" v- u* r2 R8 I
  8.         {
    & B) |! h( P0 ^3 _- j; w6 c
  9.             ExtiCnt++;
    1 I8 ]# ]' _( |# B8 m+ K
  10. 4 K9 ]+ w2 @0 l( {
  11.         }
    % B' m; K5 P' H- o3 s1 J$ |( y
  12.   }2 f" Y- u6 {, H% k  u* O
  13.   if(EXTI_GetITStatus(EXTI_Line5) != RESET)5 @0 J( N4 Z  E- `
  14.   {+ M" z4 a! P; ~3 B) A$ O
  15.     /* Clear the EXTI line 0 pending bit */% J" \# }$ H6 k6 i: C5 e# M
  16.     EXTI_ClearITPendingBit(EXTI_Line5);
    ! [: z$ ]/ |( ~2 p! d) `8 Y9 i) f
  17.         if(PauseFlag == 0)& u! Z4 e2 W. A0 i5 Y! c
  18.         {$ O: u  z1 D: Z
  19.             ExtiCnt++;  ]' M4 v& ^( K9 X" k# ~

  20. - J0 M5 l1 _% N- U1 w$ W9 }
  21.         }5 t  u7 u! S; o( a0 F
  22.   }1 G* }& b, ~& L7 b& K
  23. }
复制代码

3 d6 G6 K- p) x/ Z/ Q3 V: S6 l8 O% {  D: s
) |- E' v; |$ K6 a  J# d" _% K6 P( o
收藏 评论0 发布时间:2021-11-23 20:51

举报

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