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

【STM32G4 NUCLEO G431RB】4.按键中断

[复制链接]
jundao721 发布时间:2019-9-14 18:52
   本来不想写这个测试了,在单片机应用中算是比较常规了,后来发现这一版库函数定义还是蛮复杂的,反正比我想的复杂。尤其是中断这块还得需要熟悉。这个测试为了实现按键中断翻转LED灯。这些资源板卡上都有。原理图截图如图1所示:

* r0 O+ K8 p; y( Y1 q, A" @, @
   完成这个功能,就是初始化时钟,引脚定义,外部中断,写中断函数,基本就是这样。我研究了一下库函数,宏写的多,觉得读起来和移植都挺复杂的,就给改成原来熟悉的样子了,简化了一下。
     GPIO及中断初始化如下:
  
  1. GPIO_InitStruct.Pin = GPIO_PIN_13;2 V8 z8 i& w8 ]" k5 t2 B
  2.     GPIO_InitStruct.Pull = GPIO_PULLDOWN;
    + q8 n* z- c, |. e9 Q. ]
  3.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    3 O- h) m1 ]9 ^. \
  4.         /* Configure Button pin as input with External interrupt */
    0 g! ]8 i3 Y9 C
  5.     GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;: ^- Y. H6 F" p2 o

  6. 2 E. Y' g8 U) V6 ^$ `) Z- {* _
  7.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);8 u, u1 u, a; P; `
  8. ' \1 ^: {7 o& }1 `4 [1 S( i
  9.     (void)HAL_EXTI_GetHandle(&hpb_exti, EXTI_LINE_13);8 b$ H. J5 O$ O( Z
  10.     (void)HAL_EXTI_RegisterCallback(&hpb_exti, HAL_EXTI_COMMON_CB_ID,0);6 i4 H. ?0 J- N2 [
  11. ; ^3 v0 s- q5 |5 ]# C  b% ?8 z6 b
  12.     /* Enable and set Button EXTI Interrupt to the lowest priority */
    , g" ?- ?* Q( Q1 U% s7 t: |, U
  13.     HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0x00);3 d) M; c4 X6 Y9 H  D8 Z/ Z" `. E
  14.     HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
复制代码

- _9 D; V4 J3 _$ ~" y( X  B
  调用外部中断Callback函数:
  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin): a, x" I# p1 F" f- t- u
  2. {" J/ I; j5 _2 L. j4 k( b
  3.   if (GPIO_Pin ==GPIO_PIN_13)4 V" H8 O4 n& \9 Q7 u& {7 O& Y7 u
  4.   {
    2 q$ y8 \9 D7 R3 C9 V3 Q
  5. //    UserButtonStatus = 1;
    & s( u6 R+ b( G1 X9 a
  6.                 HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    4 F& A2 C+ U8 G3 k4 v% C9 ]& Y! Y
  7.   }
    # F' }2 D  i) H
  8. }
复制代码
  哦,对了,在初始化main函数中,初始化一下LED引脚的初始状态。
  1. GPIOA->BSRR = GPIO_PIN_5;
复制代码
  这个测试主要就是熟悉外部中断的练习。
1 a( n  @2 c+ ^0 I* b6 n7 W
  效果如图2所示:
- m" ]2 f* o4 U3 T* w& ?, q

图1

图1

图2

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

举报

0个回答

所属标签

相似技术帖

官网相关资源

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