STM32——点灯

STM32——点灯

1.开发准备

开发环境:keil5,STM32CubeMX

开发语言:C语言

烧录工具:ST-Link

库函数:HAL库

2.点灯

常用的GPIO HAL库函数:

//GPIO初始化
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
//调制电平
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
//反转
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

结构体 GPIO_InitTypeDef 定义:

typedef struct
{
   
uint32_t Pin;
uint32_t Mode;
uint32_t Pull;
uint32_t Speed;
} GPIO_InitTypeDef;

3.按键点亮LED灯(轮询法)

输入(按键):

  • KEY1:PA0
  • KEY2:PA1

输出(LED灯):

  • LED1:PB8
  • LED2:PB9
#define KEY_ON 0
#define KEY_OFF 1

uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
   
    if( HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == GPIO_PIN_RESET)
    {
   
        /* 按键按下 */
        return KEY_ON;
    }
    else
    {
   
        /* 按键松开 */
        while(HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_RESET);
        return KEY_OFF;
    }
}

while (1)
{
   
    /* USER CODE END WHILE */
    if(Key_Scan(GPIOA,GPIO_PIN_0) == KEY_ON)
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
    if(Key_Scan(GPIOA,GPIO_PIN_1) == KEY_ON)
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    /* USER CODE BEGIN 3 */
}

4.按键点亮LED灯(中断法)

  1. 配置时钟

  2. 配置GPIO口

  3. 使能中断

  4. 配置工程

    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    {
         
        switch(GPIO_Pin)
        {
         
                HAL_Delay(50);
            case GPIO_PIN_0:
                if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET)
                    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
                break;
            case GPIO_PIN_1:
                if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1)==GPIO_PIN_RESET)
                    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
                break;
        }
    }
    

相关推荐

  1. STM32——

    2024-01-31 07:08:01       32 阅读
  2. 像51单片机一样----STM32寄存器

    2024-01-31 07:08:01       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 07:08:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 07:08:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 07:08:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 07:08:01       18 阅读

热门阅读

  1. vue中nextTick()

    2024-01-31 07:08:01       34 阅读
  2. Vue2:请求接口的两种方式axios和vue-resource

    2024-01-31 07:08:01       38 阅读
  3. [GN] DP学习笔记板子

    2024-01-31 07:08:01       32 阅读
  4. 大数据之水平切分用途原理

    2024-01-31 07:08:01       36 阅读
  5. 消息

    2024-01-31 07:08:01       28 阅读
  6. Kafka常见参数

    2024-01-31 07:08:01       38 阅读