【STM8S】STM8S之多个自定义LED

本文最后修改时间:2018年10月30日 18:48

一、本节简介

本文介绍STM8S系列如何编写多个自定义LED的控制。

二、实验平台

编译软件:IAR for STM8 1.42.2

硬件平台:stm8s003f3p6开发板

仿真器:ST-LINK

库函数版本:V2.0.0

三、版权声明

1)作者:甜甜的大香瓜

2)声明:喝水不忘挖井人,转载请注明出处。

3)纠错/业务合作:[email protected]

4)香瓜嵌入式之STM8/STM32群:164311667

5)本文出处:原创连载资料《简单粗暴学STM8和STM32》

6)完整开源资料下载地址(电脑端打开):opengua.taobao.com

四、实验前提

1、在进行本文步骤前,请先阅读以下章节:

1)《简单粗暴学STM8和STM32》的"第一章和第三章"章节。

2、在进行本文步骤前,请先实现以下章节:

1)《简单粗暴学STM8和STM32》的《STM8S之内外部16M晶振》。

五、基础知识

暂无

六、硬件原理

上图可知led灯与引脚对应关系,以及引脚低电平时亮灯、高电平时灭灯。

七、实验步骤

1 、工程中添加自己写的LED驱动

1 )写一个LED驱动GUA_Led.c(存放在工程的USER文件夹中)

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| //********************************************************************** //name: GUA_Led.c //introduce: LED驱动 //author: 甜甜的大香瓜 //email: [email protected] //QQ group: 香瓜单片机之STM8/STM32(164311667) //shop: opengua.taobao.com //changetime: 2019.08.03 //********************************************************************** #include "stm8s.h" #include "GUA_Led.h" //********************************************************************** //name: GUA_Led_Control //introduce: LED控制 //parameter: nGUA_Led_Control:GUA_Led_CONTROL_ON or GUA_Led_CONTROL_OFF //return: none //author: 甜甜的大香瓜 //email: [email protected] //QQ group: 香瓜单片机之STM8/STM32(164311667) //shop: opengua.taobao.com //changetime: 2019.08.03 //********************************************************************** void GUA_Led_Control(GUA_U8 nGUA_Led,GUA_U8 nGUA_Led_Control) { switch(nGUA_Led) { //LED1 case GUA_LED1: { //开灯 if(nGUA_Led_Control == GUA_LED_CONTROL_ON) { GPIO_WriteLow(GUA_LED1_PORT, GUA_LED1_PIN); } //关灯 else { GPIO_WriteHigh(GUA_LED1_PORT, GUA_LED1_PIN); } break; } //LED2 case GUA_LED2: { //开灯 if(nGUA_Led_Control == GUA_LED_CONTROL_ON) { GPIO_WriteLow(GUA_LED2_PORT, GUA_LED2_PIN); } //关灯 else { GPIO_WriteHigh(GUA_LED2_PORT, GUA_LED2_PIN); } break; } //LED3 case GUA_LED3: { //开灯 if(nGUA_Led_Control == GUA_LED_CONTROL_ON) { GPIO_WriteLow(GUA_LED3_PORT, GUA_LED3_PIN); } //关灯 else { GPIO_WriteHigh(GUA_LED3_PORT, GUA_LED3_PIN); } break; } //LED4 case GUA_LED4: { //开灯 if(nGUA_Led_Control == GUA_LED_CONTROL_ON) { GPIO_WriteLow(GUA_LED4_PORT, GUA_LED4_PIN); } //关灯 else { GPIO_WriteHigh(GUA_LED4_PORT, GUA_LED4_PIN); } break; } //LED1 default:break; } } //********************************************************************** //name: GUA_Led_Init //introduce: 继电器初始化 //parameter: none //return: none //author: 甜甜的大香瓜 //email: [email protected] //QQ group: 香瓜单片机之STM8/STM32(164311667) //shop: opengua.taobao.com //changetime: 2019.08.03 //********************************************************************** void GUA_Led_Init(void) { //LED初始化 GPIO_Init(GUA_LED1_PORT, GUA_LED1_PIN, GUA_LED1_MODE); GPIO_Init(GUA_LED2_PORT, GUA_LED2_PIN, GUA_LED2_MODE); GPIO_Init(GUA_LED3_PORT, GUA_LED3_PIN, GUA_LED3_MODE); GPIO_Init(GUA_LED4_PORT, GUA_LED4_PIN, GUA_LED4_MODE); } |

2 )写一个LED驱动头文件GUA_Led.h(存放在工程的USER文件夹中)

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| //********************************************************************** //name: GUA_Led.h //introduce: LED驱动的头文件 //author: 甜甜的大香瓜 //email: [email protected] //QQ group: 香瓜单片机之STM8/STM32(164311667) //shop: opengua.taobao.com //changetime: 2019.08.03 //********************************************************************** #ifndef GUA_LED_H #define GUA_LED_H /*********************宏定义************************/ //类型宏 #ifndef GUA_C typedef char GUA_C; #endif #ifndef GUA_U8 typedef unsigned char GUA_U8; #endif #ifndef GUA_8 typedef signed char GUA_8; #endif #ifndef GUA_U16 typedef unsigned short GUA_U16; #endif #ifndef GUA_16 typedef signed short GUA_16; #endif #ifndef GUA_U32 typedef unsigned long GUA_U32; #endif #ifndef GUA_32 typedef signed long GUA_32; #endif #ifndef GUA_U64 typedef unsigned long long GUA_U64; #endif #ifndef GUA_64 typedef signed long long GUA_64; #endif //LED引脚宏 #define GUA_LED1_PORT GPIOC #define GUA_LED1_PIN GPIO_PIN_7 #define GUA_LED1_MODE GPIO_MODE_OUT_PP_HIGH_FAST #define GUA_LED2_PORT GPIOC #define GUA_LED2_PIN GPIO_PIN_6 #define GUA_LED2_MODE GPIO_MODE_OUT_PP_HIGH_FAST #define GUA_LED3_PORT GPIOC #define GUA_LED3_PIN GPIO_PIN_5 #define GUA_LED3_MODE GPIO_MODE_OUT_PP_HIGH_FAST #define GUA_LED4_PORT GPIOC #define GUA_LED4_PIN GPIO_PIN_4 #define GUA_LED4_MODE GPIO_MODE_OUT_PP_HIGH_FAST //LED序号宏 #define GUA_LED1 0 #define GUA_LED2 1 #define GUA_LED3 2 #define GUA_LED4 3 //LED开关控制宏 #define GUA_LED_CONTROL_ON 0 #define GUA_LED_CONTROL_OFF 1 /*********************外部函数声明************************/ void GUA_Led_Control(GUA_U8 nGUA_Led,GUA_U8 nGUA_Led_Control); void GUA_LED_Init(void); #endif |

3 )工程中添加GUA_Led.c

4 )添加驱动的路径

|----------------------|
| PROJ_DIR\..\USER |

注意USER文件夹是与"Project"、"FWlib"文件夹同级的自定义文件,用于存放香瓜写的代码。

3 、添加库的驱动

1 )添加库的驱动文件

2 )添加库的驱动头文件(stm8s_conf.h中)

|-------------------------|
| #include "stm8s_gpio.h" |

3 、应用层中调用

1 )添加头文件(main.c中)

|----------------------|
| #include "GUA_Led.h" |

2 )添加初始化(main.c的main函数中)

|----------------------------|
| //LED控制初始化 GUA_Led_Init(); |

3 )添加测试代码(main.c的main函数中)

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| //LED测试 GUA_Led_Control(GUA_LED1, GUA_LED_CONTROL_ON); //开灯 GUA_Led_Control(GUA_LED2, GUA_LED_CONTROL_ON); //开灯 GUA_Led_Control(GUA_LED3, GUA_LED_CONTROL_ON); //开灯 GUA_Led_Control(GUA_LED4, GUA_LED_CONTROL_ON); //开灯 GUA_Led_Control(GUA_LED1, GUA_LED_CONTROL_OFF); //关灯 GUA_Led_Control(GUA_LED2, GUA_LED_CONTROL_OFF); //关灯 GUA_Led_Control(GUA_LED3, GUA_LED_CONTROL_OFF); //关灯 GUA_Led_Control(GUA_LED4, GUA_LED_CONTROL_OFF); //关灯 |

八、注意事项

暂无

九、实验结果

会依次点亮板子的LED1~LED4,然后又依次熄灭LED1~LED4。

因此,实验成功。

相关推荐
云山工作室1 小时前
基于单片机的智能宿舍管理系统(论文+源码)
单片机·嵌入式硬件·毕业设计
honey ball13 小时前
EMC内参二(1-33页)学习【技术进阶】
开发语言·单片机·嵌入式硬件·学习
触角0101000114 小时前
STM32看门狗应用实战:独立看门狗与窗口看门狗深度解析(下) | 零基础入门STM32第九十五步
驱动开发·stm32·单片机·嵌入式硬件·物联网
USER_A00115 小时前
【STM32】综合练习——智能风扇系统
stm32·单片机·嵌入式硬件·智能风扇
狄加山67515 小时前
STM32 基础2
stm32·单片机·嵌入式硬件
爱喝西北风的东北风16 小时前
状态机思想编程
单片机·嵌入式硬件·fpga开发
柒月玖.17 小时前
基于AT89C51单片机的加减乘除液晶计算机设计
单片机·嵌入式硬件
剑鞘的流苏18 小时前
DC-DC电路和LDO电路
单片机·嵌入式硬件
CDialog20 小时前
qemu仿真调试esp32,以及安装版和vscode版配置区别
单片机·嵌入式硬件
南梦也要学习20 小时前
STM32江科大----IIC
stm32·单片机·嵌入式硬件