当前位置: 首页 > article >正文

stm32 点亮LED

第一步:

在Drives文件夹下的BSP创建LED.c文件,先编译一下从而创建.h 文件,在.h 文件下输入如下代码   中间一段void是LED.c 文件中的头文件。

#ifndef __LED_H__

#define __LED_H__

void led_init(void);
void led1_on(void);
void led1_off(void);
void led1_toggle(void);

#endif

第二步:

编写LED.c代码,代码包含以下几个内容 

1.创建初始化的结构体 用于后续传入参数

2.初始化GPIO函数(包括时钟       __HAL_RCC_GPIOB_CLK_ENABLE();       ,调用GPIO初始化函数 几种常见函数看之前文章   HAL_GPIO_Init(GPIOB,&gpio_initstruct);  ,关闭LED灯)

第三步:

包含1. 打开LED灯   2. 关闭LED灯  3. 翻转LED灯      写入高低电平主要用  GPIO的 此函数HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)  

用于后续函数调用

第四步:在主函数中调用函数

以下为驱动LED.c 文件中的代码  (注意包含头文件led.h和sys.h)

#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_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();
    
}

//③点亮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);
}

 主函数代码  要包含 时钟 延时 LED的头文件

#include "sys.h"
#include "delay.h"
#include "led.h"

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    led_init();
//    led1_on();
//    led1_off();
    while(1)
    { 
       
       led1_toggle();
       delay_ms(500);

    }
}

  


http://www.kler.cn/a/407689.html

相关文章:

  • 泷羽sec学习打卡-超文本协议和内外网划分
  • WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理
  • 由于centos停更,yum、docker等不支持,采用阿里云仓库搭建K8S
  • 电子应用设计方案-19:智能云饭锅系统方案设计
  • torch_geometric使用手册-Creating Message Passing Networks(专题二)
  • Python 中的三重引号
  • listening comprehension
  • JavaScript中同步编程和异步编程
  • vue el-table表格点击某行触发事件操作栏点击和row-click冲突问题
  • Unity-添加世界坐标系辅助线
  • 集群聊天服务器(14)github发布
  • redis中的zset类型及其常用命令
  • QT基础教程(QT网络编程)
  • 计算机网络名词解释汇总
  • MySQL 数据库命名及SQL语句书写规范详解
  • Spring ApplicationListener
  • AWTK fscript 中的 大端小端扩展函数
  • 【滤波器】低通、带通、高通滤波器区别及作用
  • 【国产MCU系列】-GD32F470-高级定时器
  • Edify 3D: Scalable High-Quality 3D Asset Generation 论文解读
  • 使用Kubernetes部署第一个应用
  • 华为机试HJ62 查找输入整数二进制中1的个数
  • GESP考试大纲
  • doris的安装部署
  • 用vite下载的react + TS的项目,组件会调用两次
  • Python 快速入门(上篇)❖ Python基础知识