打印
[STM32L5]

【STM32L562E-DK测评】-2-外部GPIO中断测试

[复制链接]
40|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DK板子上有两个用户按键:


其中,B1是复位按键,B2是用户按键。


这与原理图是一致的:


在代码中,配置PC13输入模式,并使能下降沿触发中断。
static void EXTI13_IRQHandler_Config(void)
{
  GPIO_InitTypeDef   GPIO_InitStructure;


  /* Enable GPIOC clock */
  __HAL_RCC_GPIOC_CLK_ENABLE();

  /* Configure PC.13 pin as input floating */
  GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;


  GPIO_InitStructure.Pull = GPIO_NOPULL;
  GPIO_InitStructure.Pin = BUTTON_USER_PIN;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);


  /* Enable and set line 13 Interrupt to the lowest priority */
  HAL_NVIC_SetPriority(EXTI13_IRQn, 2, 0);
  HAL_NVIC_EnableIRQ(EXTI13_IRQn);
}
初始化LED,这样在按键按下后,可以改变LED的状态。
int32_t BSP_LED_Init(Led_TypeDef Led)
{
  int32_t          status = BSP_ERROR_NONE;
  GPIO_InitTypeDef GPIO_Init;

  /* Enable the GPIO_LED Clock */
  if (Led == LED9)
  {
    LED9_GPIO_CLK_ENABLE();
  }
  else /* Led = LED10 */
  {
    /* Enable VddIO2 for GPIOG */
    __HAL_RCC_PWR_CLK_ENABLE();
    HAL_PWREx_EnableVddIO2();
    LED10_GPIO_CLK_ENABLE();
  }

  /* configure the GPIO_LED pin */
  GPIO_Init.Pin   = LED_PIN[Led];
  GPIO_Init.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_Init.Pull  = GPIO_PULLUP;
  GPIO_Init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  HAL_GPIO_Init(LED_PORT[Led], &GPIO_Init);

  HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_SET);

  return status;
}

下面是中断服务程序:
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
  if (GPIO_Pin == BUTTON_USER_PIN)
  {
    /* Toggle LED10 */
    BSP_LED_Toggle(LED10);
  }
}

编译代码:
arm-none-eabi-size  GPIO_EXTI.elf 
arm-none-eabi-objdump -h -S GPIO_EXTI.elf  > "GPIO_EXTI.list"
   text           data            bss            dec            hex        filename
   8088             24           1568           9680           25d0        GPIO_EXTI.elf
Finished building: default.size.stdout

Finished building: GPIO_EXTI.list


22:10:51 Build Finished. 0 errors, 0 warnings. (took 4s.653ms)

烧录程序,失败了,看来ST-LINK升级在所难免。




点击open in update mode


升级成功


点击小虫子进入debug模式,之后全速运行


按下板子上的用户按键,小灯状态会进行翻转。



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

107

帖子

1

粉丝