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;
        }
    }
相关推荐
续写烂尾1 小时前
SD NAND存储实测:正点原子STM32精英板SDIO读写验证全流程
stm32·单片机·嵌入式硬件
zlinear数据采集卡3 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
wuyk5554 小时前
1.栈:后进先出的线性数据结构
c语言·数据结构·stm32·单片机
Crkylin4 小时前
Cortex-M SysTick系统滴答定时器详解
单片机·嵌入式硬件
Hello_Damon_Nikola5 小时前
AC7911从入门到精通
开发语言·嵌入式硬件·物联网·php
gscsded5 小时前
AUTOSAR CanTp 模块学习笔记
单片机·嵌入式硬件·汽车
Hello_Damon_Nikola6 小时前
扰流筋从原理到应用
人工智能·单片机·嵌入式硬件
某林2126 小时前
从“仿真能跑”到“真机能走”:一套轮腿机械狗强化学习系统的工程化实践
人工智能·stm32·嵌入式硬件·架构·机器人·机械狗
luiyarch6 小时前
IP8到底是什么?
嵌入式硬件·车载系统
hongmai6668887 小时前
ESP32-WROVER-B-N8R8:8MB PSRAM加持的经典双核模组,现在还值得选吗?
单片机·嵌入式硬件·物联网·智能路由器·risc-v