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号16 分钟前
【ESP32】3.串口的发送与接受
单片机·物联网
KaiGer66621 分钟前
AUTOSAR进阶图解==>AUTOSAR_SWS_V2XFacilities
单片机·汽车·嵌入式·autosar
desssq2 小时前
SPI通信协议
单片机·嵌入式硬件
星辰pid4 小时前
STM32实现四自由度机械臂(SG90舵机)多功能控制(软件篇freertos)
stm32·单片机·嵌入式硬件·机械臂
森焱森9 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
小殷学长12 小时前
【单片机毕业设计17-基于stm32c8t6的智能倒车监测系统】
stm32·单片机·课程设计
TESmart碲视13 小时前
HKS201-M24 大师版 8K60Hz USB 3.0 适用于 2 台 PC 1台显示器 无缝切换 KVM 切换器
单片机·嵌入式硬件·物联网·游戏·计算机外设·电脑·智能硬件
small_wh1te_coder14 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
花落已飘14 小时前
STM32中实现shell控制台(shell窗口输入实现)
stm32·单片机·嵌入式硬件
花落已飘15 小时前
STM32中实现shell控制台(命令解析实现)
stm32·shell