STM32 流水灯实验

如果两个灯在一个组则时钟无需增加 初始化时明确引脚可以

gpio_initstruct.Pin = GPIO_PIN_8 | GPIO_PIN_9; //用" | "来同时 这样无需重新初始化

以下为驱动LED.c的代码

cs 复制代码
#include "led.h"
#include "sys.h"

//①定义初始化结构体
    GPIO_InitTypeDef gpio_initstruct;
//②初始化GPIO函数
void led_init(void)
{
    //打开时钟
    __HAL_RCC_GPIOB_CLK_ENABLE();   //注意看硬件原理图中LED灯的引脚在哪一个组
    //调用GPIO初始化函数
    gpio_initstruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;                         //LED1、LED2对应的引脚
    gpio_initstruct.Pull = GPIO_PULLUP;                       //推挽输出
    gpio_initstruct.Mode =GPIO_MODE_OUTPUT_PP;                //上拉
    gpio_initstruct.Speed =GPIO_SPEED_FREQ_HIGH;              //高速
    HAL_GPIO_Init(GPIOB,&gpio_initstruct);
    //关闭LED灯
    led1_off();
    led2_off();
}

//③点亮LED1的函数
void led1_on(void)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);    //RESET 为高电平

}
//④熄灭LED1的函数
void led1_off(void)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);      //SET 为低电平

}

//⑤翻转LED1状态的函数
void led1_toggle(void)
{
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
}
//③点亮LED2的函数
void led2_on(void)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);    //RESET 为高电平

}
//④熄灭LED2的函数
void led2_off(void)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);      //SET 为低电平

}

//⑤翻转LED2状态的函数
void led2_toggle(void)
{
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
}
相关推荐
Zeku4 分钟前
内核日志分析:__spi_pump_messages的Caller_Optimization和KWorker_Thread
stm32·freertos·linux驱动开发·linux应用开发
点灯小铭17 分钟前
基于单片机的模拟量检测与限值报警系统设计
单片机·嵌入式硬件·毕业设计·课程设计
来自晴朗的明天23 分钟前
高通QC快充协议
单片机·嵌入式硬件·硬件工程
LN花开富贵24 分钟前
LM393的工作原理和引脚作用
笔记·单片机·嵌入式硬件·学习·嵌入式
清风66666625 分钟前
基于单片机的道岔转辙机智能润滑监测系统设计(温湿度+粉尘检测+远程控制)
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
xiaobuding_QAQ28 分钟前
51汇编仿真proteus8.15学习篇四(附源码)
汇编·单片机·学习·proteus
项目題供诗29 分钟前
51单片机入门(三)
单片机·嵌入式硬件·51单片机
TDengine (老段)31 分钟前
初学者使用 docker 快速体验 TDengine 功能
大数据·物联网·docker·容器·时序数据库·tdengine
电子工程师成长日记-C5134 分钟前
51单片机16路抢答器
单片机·嵌入式硬件·51单片机
xiaobuding_QAQ38 分钟前
51汇编仿真proteus8.15学习篇三(附源码)
汇编·单片机·学习·proteus