STM32框架式代码管理LED代码的讲解

简介: STM32框架式代码管理LED代码的讲解

前言

本文接着上一篇文章的内容带大家学习如何编写一个完整的LED代码。

一、头文件以及宏定义的编写

led.c

#include "led.h"

在led.c中我们只需要包含.h文件即可

led.h

#ifndef _LED_H_
#define _LED_H_
#include "main.h"
#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned int
//灯LED2的IO定义
#define LED2_RESET() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET) //设置LED2低电平
#define LED2_SET() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET) //设置LED2高电平
//灯LED1的IO定义
#define LED1_RESET() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET) //设置LED1低电平
#define LED1_SET() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET) //设置LED1高电平

led.h中的定义比较多一些,需要对LED的端口进行定义方便使用,移植时只需要改写后面的代码即可使用。

还需要对常用的数据类型进行宏定义,方便书写代码。

二、框架式管理代码的精华:结构体

led.h

typedef struct
{
  u8 sw; //开关
  u32 pre; //周期
} BRE_t;
typedef struct
{
  u8 sw; //开关
  u32 pre; //周期
} BLK_t;
typedef struct
{
    BRE_t bre; //呼吸灯
    BLK_t blk; //闪烁灯
} LED_DATA;
extern LED_DATA ledData; //灯属性封装

在led.h文件中我们定义了三个结构体,一个是管理呼吸灯属性的结构体,一个是管理闪烁灯属性的结构体。这两个结构体里面分别定义了开关变量和周期变量,通过修改开关变量可以改变LED灯的亮灭,改变周期变量可以让LED灯的呼吸频率和闪烁频率改变。

最后一个结构体作为统筹管理的结构体,他里面定义了呼吸灯结构体变量和闪烁灯结构体变量,方便调试运行。

三、函数的编写

void LED_Init(void); //初始化调用
void LED_Task(void); //后台轮询调用
void LED_TIM_Handle(void); //定时调用

通常我们编写这三个函数

Init做一些LED灯的初始化比如开关的状态和周期的大小。

Task函数一般放在while(1)里面轮询调用

Handle函数则放在定时器里面中断调用

总结

信息大家看完这篇文章后应该会更加了解框架式编写代码的流程了。具体的代码放在LED代码

上一篇文章

相关文章
|
4月前
|
安全 开发工具 数据安全/隐私保护
代码管理记录(一): 码云Gitee代码提交和维护
本文介绍了Gitee平台,提供了代码托管服务,并详细说明了从新建仓库到代码提交的步骤。
121 1
代码管理记录(一): 码云Gitee代码提交和维护
|
4月前
|
开发工具 git Python
代码管理记录(二):Github代码上传实操
本文是关于如何使用Git将本地代码上传到GitHub的实操指南。介绍了Git的基本概念、安装方法,并通过详细的步骤指导用户从GitHub创建仓库到使用Git命令初始化、添加、提交代码,最终将代码推送到远程仓库。同时,还汇总了一些常见的错误及其解决方法。
123 2
代码管理记录(二):Github代码上传实操
|
4月前
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
93 4
|
4月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
51 4
|
7月前
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
120 10
|
7月前
STM32CubeMX 按键控制LED
STM32CubeMX 按键控制LED
102 0
|
7月前
STM32CubeMX 点亮LED
STM32CubeMX 点亮LED
91 0
|
8月前
|
存储 数据安全/隐私保护 芯片
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解独立看门狗的本质和使用步骤&代码
【STM32】详解独立看门狗的本质和使用步骤&代码
|
8月前
|
传感器 数据格式
【STM32】DHT11温湿度模块传感器详解&代码
【STM32】DHT11温湿度模块传感器详解&代码