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

STM32 HAL 点灯

首先从点灯开始

完整函数如下:

#include "led.h"
#include "sys.h"//包含了stm32f1xx.h(包含各种寄存器定义、中断向量定义、常量定义等)//初始化GPIO口
void led_init(void)
{GPIO_InitTypeDef gpio_initstruct;//打开时钟__HAL_RCC_GPIOB_CLK_ENABLE();//调用GPIO初始化函数gpio_initstruct.Pin=GPIO_PIN_8;//引脚gpio_initstruct.Mode=GPIO_MODE_OUTPUT_PP;//推挽输出gpio_initstruct.Pull=GPIO_PULLUP;//上拉输入(无所谓)gpio_initstruct.Speed=GPIO_SPEED_FREQ_HIGH;//高速HAL_GPIO_Init(GPIOB,&gpio_initstruct);//熄灭LED灯led1_off();
}//点亮LED灯
void led1_on(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
}//熄灭LED灯
void led1_off(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
}//切换LED灯的状态
void led1_toggle(void)
{HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}

主函数如下:

#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();while(1){ }
}

在文件夹中创建一个我们需要的驱动文件

把驱动文件放在我们的项目当中

加上头文件保护宏,避免头文件被重复包含

首先明确我们的LED函数所包含的所有功能

第一步初始化GPIO口

打开时钟
在时钟库函数找到GPIO的时钟打开定义的函数,在这里我们的LED灯接在GPIOB_8上面

调用GPIO初始化函数

引脚与模式

速度

(可以关闭LED灯)

点亮LED灯

这边我们的LED的一段接的是高电平,如若要是LED亮,需要使另外一段为高电平,LED 灯导通,使其点亮

写入GPIO的函数

高低电平设置,RESET是低电平(为0),SET为高电平

下面熄灭和切换也相同

最后,我们可以加上切换函数来实现LED闪烁

当然我们需要在其中加上一个延迟函数才能实现

这样就实现了

我们也可以用另外一个操作实现LED灯的闪烁

亮——延迟——灭——延迟

同样的流水灯(这里我们用两颗LED灯进行演示)

引脚增加这里可用   |   (或)符号

LED2灯初始化直接在下面进行进行相同的操作即可

这样实现了流水灯效果

同样的,对于其他简单的元器件,比如蜂鸣器,传感器等,只需拉高或拉低就能实现相应的功能时,我们都可以进行这样类似的操作来使功能实现。

http://www.lryc.cn/news/472432.html

相关文章:

  • 【http作业】
  • WPF+MVVM案例实战(十一)- 环形进度条实现
  • 简述MCU微控制器
  • 微服务的雪崩问题
  • Java基础(4)——构建字符串(干货)
  • logback日志脱敏后异步写入文件
  • 电容的基本知识
  • 【Axure高保真原型】分级树筛选中继器表格
  • STM32 I2C通信:硬件I2C与软件模拟I2C的区别
  • 服务器新建用户
  • 鸿蒙开发融云demo发送图片消息
  • 音视频入门基础:AAC专题(11)——AudioSpecificConfig简介
  • OpenCV基本操作(python开发)——(8)实现芯片瑕疵检测
  • 聚水潭商品信息集成到MySQL的高效解决方案
  • # centos6.5 使用 yum list 报错Error Cannot find a valid baseurl for repo bas 解决方法
  • 【专题】2023-2024中国保险数字化营销调研报告汇总PDF洞察(附原数据表)
  • ““ 引用类型应用举例
  • 数字图像处理 - 基于ubuntu20.04运行.NET6+OpenCVSharp项目
  • git cherry-pick用法详解
  • HCIP-HarmonyOS Application Developer V1.0 笔记(一)
  • 开发流程初学者指南——需求分析
  • CRM平台排名:用户体验与客户满意度的深度解析
  • WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)
  • 打造自己的RAG解析大模型:(新技能)企业垂类数据标注(一)
  • 怎么理解ES6 Proxy
  • verilog实现一个5bit序列检测器
  • Redis数据安全_持久化机制
  • 什么是信息熵,什么是交叉熵,什么是KL散度?
  • 开发者的福音:PyTorch 2.5现已支持英特尔独立显卡训练
  • Deep InfoMax(DIM)(2019-02-ICLR)