STM32——点灯

STM32------点灯

1.开发准备

开发环境:keil5,STM32CubeMX

开发语言:C语言

烧录工具:ST-Link

库函数:HAL库

2.点灯

常用的GPIO HAL库函数:

c 复制代码
//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 定义:

c 复制代码
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
c 复制代码
#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. 配置工程

    c 复制代码
    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;
        }
    }
相关推荐
xingzhemengyou122 分钟前
STM32 Boot0 与 Boot1 [当 Flash 被误操作锁死或 SWD/JTAG 无法连接时,很有用]
stm32·单片机·嵌入式硬件
恒锐丰小吕29 分钟前
屹晶微 EG27710 600V耐压、高性能、快速开关的半桥驱动芯片技术解析
嵌入式硬件·性能优化·硬件工程
一路往蓝-Anbo1 小时前
【第05期】数据的微观世界 (五) —— 浮点数 vs 定点数:MCU的数学课
linux·stm32·单片机·嵌入式硬件·物联网
polarislove02141 小时前
9.2 自制延迟函数-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
Cincoze-Johnny1 小时前
Windows系统-应用问题全面剖析Ⅳ:德承工控机DV-1000在Windows操作系统下[桌面图标消失]的解决方法
单片机·嵌入式硬件
智嵌电子1 小时前
【笔记篇】【硬件基础篇】模拟电子技术基础 (童诗白) 第7章 波形的发生和信号的转换
笔记·嵌入式硬件
Nautiluss2 小时前
一起调试XVF3800麦克风阵列(二)
大数据·人工智能·嵌入式硬件·音频·语音识别·dsp开发
一路往蓝-Anbo2 小时前
【第14期】裸机中断优先级:抢占与嵌套的逻辑
c语言·开发语言·stm32·单片机·物联网
贪玩成性3 小时前
LED5050驱动程序,高效率
单片机·mcu
d111111111d3 小时前
STM32 电源管理模式全解析:低功耗场景该如何选型?
笔记·stm32·单片机·嵌入式硬件·学习