• 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态


    实验原理:

      按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻。

    初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V);

    当按键按下时,PB9直接被按键短接到GND,呈低电平,因此PB9的电平变化产生下降

    沿,从而进入中断函数,进入中断回调。

    实验现象:

      按键被按下一次,切换一个LED的状态。

    源代码下载链接:

    链接:http://pan.baidu.com/s/1hrCzb2s 密码:21yp

    核心代码:

    int main(void)
    {
    
      /* USER CODE BEGIN 1 */
    
      /* USER CODE END 1 */
    
      /* MCU Configuration----------------------------------------------------------*/
    
      /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
      HAL_Init();
    
      /* USER CODE BEGIN Init */
    
      /* USER CODE END Init */
    
      /* Configure the system clock */
      SystemClock_Config();
    
      /* USER CODE BEGIN SysInit */
    
      /* USER CODE END SysInit */
    
      /* Initialize all configured peripherals */
      MX_GPIO_Init();
    
      /* USER CODE BEGIN 2 */
        LED_RED_ON;
      /* USER CODE END 2 */
    
      /* Infinite loop */
      /* USER CODE BEGIN WHILE */
      while (1)
      {
      /* USER CODE END WHILE */
    
      /* USER CODE BEGIN 3 */
    
      }
      /* USER CODE END 3 */
    
    }
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    {
        static int led_work_status = 0;
    
        HAL_Delay(10);
        if(ARM_KEY_STATE == KEY_DOWN){
            led_work_status += 1;
            if(led_work_status > 2)led_work_status = 0;
        }
        switch(led_work_status){
            case 0:
                LED_RED_ON;
                LED_GREEN_OFF;
                LED_BLUE_OFF;
                break;
            case 1:
                LED_RED_OFF;
                LED_GREEN_ON;
                LED_BLUE_OFF;
                break;
            case 2:
                LED_RED_OFF;
                LED_GREEN_OFF;
                LED_BLUE_ON;
                break;
            default:
                break;
        }
        __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_9);    
    
    }

    iCore4链接:

  • 相关阅读:
    c++设计模式总结
    Java复习(四)类的重用
    Java复习(三)类中的方法
    Java复习(二)类与对象的基本概念
    Java复习(一)——Java语言概述、开发环境、基础知识
    Java复数的加乘除运算
    人见人爱A+B
    noj快排
    noj最长公共子序列
    C语言里有没有sort函数?有!
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/7297427.html
Copyright © 2020-2023  润新知