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

【STM32G4 NUCLEO G431RB】4.按键中断

[复制链接]
jundao721 发布时间:2019-9-14 18:52
   本来不想写这个测试了,在单片机应用中算是比较常规了,后来发现这一版库函数定义还是蛮复杂的,反正比我想的复杂。尤其是中断这块还得需要熟悉。这个测试为了实现按键中断翻转LED灯。这些资源板卡上都有。原理图截图如图1所示:
/ f+ A% Y3 l2 p+ t
   完成这个功能,就是初始化时钟,引脚定义,外部中断,写中断函数,基本就是这样。我研究了一下库函数,宏写的多,觉得读起来和移植都挺复杂的,就给改成原来熟悉的样子了,简化了一下。
     GPIO及中断初始化如下:
  
  1. GPIO_InitStruct.Pin = GPIO_PIN_13;
    $ A% J" {! {9 n) P* K
  2.     GPIO_InitStruct.Pull = GPIO_PULLDOWN;
    / }  H2 x: ~* j- d+ k
  3.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;7 L) G/ z8 i# K% F/ Y7 [4 s: b" M
  4.         /* Configure Button pin as input with External interrupt */
    0 d, c& x) @# P3 m3 w
  5.     GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
    ( P$ X6 B9 c  F( }) i" m
  6. . l$ W+ O$ @2 H4 e* C/ `
  7.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    ! U& A* e1 Z( ?1 E/ H, m# V; y

  8. 2 {3 Q( t3 e$ z" O8 z/ Z: R- d. J: o
  9.     (void)HAL_EXTI_GetHandle(&hpb_exti, EXTI_LINE_13);% F' x* J, p# e  i, F
  10.     (void)HAL_EXTI_RegisterCallback(&hpb_exti, HAL_EXTI_COMMON_CB_ID,0);
    7 G; G) r5 q, o: i1 J8 C( y
  11. ; v* h- {4 E6 U) ^/ _
  12.     /* Enable and set Button EXTI Interrupt to the lowest priority */3 E( x, q* F& g% y
  13.     HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0x00);1 W1 y0 E8 c3 A) n" E0 V- z" b- r
  14.     HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
复制代码
  k* [1 ]5 T* g$ B, f$ x1 i
  调用外部中断Callback函数:
  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)6 r: F) z! K4 k
  2. {! `7 `# X$ t4 c5 b  g
  3.   if (GPIO_Pin ==GPIO_PIN_13), k( R. P6 l8 P3 \6 D) A: ?2 W, E
  4.   {
    * e- t: s2 A. _0 J; B, V5 o
  5. //    UserButtonStatus = 1;5 S  E- {9 K" K% K  A: V
  6.                 HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    * S% T' k2 s, w" T5 C& C5 P
  7.   }
      ^% B0 T3 @* m. r
  8. }
复制代码
  哦,对了,在初始化main函数中,初始化一下LED引脚的初始状态。
  1. GPIOA->BSRR = GPIO_PIN_5;
复制代码
  这个测试主要就是熟悉外部中断的练习。

5 C2 _- z! l% ~; A4 r  w
  效果如图2所示:
( K) ]. t, ]7 ~" A$ W. v. [

图1

图1

图2

图2
赞 收藏 评论0 发布时间:2019-9-14 18:52

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版