• 【iCore4 双核心板_ARM】例程二:读取ARM按键状态


    实验原理:

      按键的一端与STM32 PB9相连,另外一端接地,且PB9外接一个1K电阻大小的上拉电阻,

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

    当按键按下时,PB9直接被按键短接到GND,呈低电平,因此判断PB9的电平变化可得到按键状态。

    实验现象:

      该按键每按下一次,LED改变一次状态。

    源代码下载链接:

    链接:http://pan.baidu.com/s/1mhPhFfy 密码:rrgr

    核心源码:

    int main(void)
    {
    
      /* USER CODE BEGIN 1 */
        static int led_work_status = 0;//三色LED工作状态
        static int key_status = KEY_UP;//按键松开状态
        
      /* 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;                                         //初始化LED状态
      /* USER CODE END 2 */
    
      /* Infinite loop */
      /* USER CODE BEGIN WHILE */
    //按键每按下一次切换一次LED状态
      while (1)
      {
      /* USER CODE END WHILE */
    
      /* USER CODE BEGIN 3 */
            if(ARM_KEY_STATE == KEY_UP)key_status = KEY_UP;
            if(key_status == KEY_UP){
                if(ARM_KEY_STATE == KEY_DOWN){
                    HAL_Delay(20);           //按键消抖
                    if(ARM_KEY_STATE == KEY_DOWN){
                        key_status = KEY_DOWN;
                        led_work_status += 1;
                        if(led_work_status > 2)led_work_status = 0;
                        //²Ù×÷LED
                        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;
                        }                
                    }
                }
            }
      }
      /* USER CODE END 3 */
    
    }

    iCore4链接:

  • 相关阅读:
    进度3
    进度2
    进度1
    库存物资管理系统
    课程管理系统
    文件与流作业
    bzoj4027: [HEOI2015]兔子与樱花
    bzoj2067: [Poi2004]SZN
    bzoj2071:[POI2004]山洞迷宫
    bzoj1063: [Noi2008]道路设计
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/7261345.html
Copyright © 2020-2023  润新知