一、概述
不管什么单片机,想要控制LED灯,只能是通过控制单片机芯片的I/O引脚电平的高低来实现。
同样在ST单片机上,I/O引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为 GPIO (General-purpose I/O)。
而GPIO引脚又被分为GPIOA、GPIOB„„GPIOG不同的组,每组端口分为 0~15,共16个不同的引脚不等,
对于不同型号的芯片,端口的组和引脚的数量不尽相同,具体请参考相应ST单片机芯片型号的datasheet。
根据ST单片机的GPIO特点,控制LED灯的步骤如下:
1.在众多 GPIO端口引脚中选定需要控制的特定引脚[与LED相连的控制引脚]
2.根据外设配置GPIO需要的特定功能
3.通过设置 GPIO输出电压的高低控制LED的亮和灭
STM8S003F3是一款比较小巧的单片机,在IO资源需求够小的时候可以选择,同时它的控制也相对的简单些,
STM8系列的单片机一般都是使用IAR for STM8的开发环境,同时注意,在安装时最好把STLink下载器直接插在电脑上安装,
因为在安装IAR for STM8开发环境时会自动安装STLink的驱动。[根据本人经验,插上下载器安装最容易安装成功]
二、硬件电路图
三、需要用到的函数库
stm8s_gpio.c
程序
main.c
/*********************************************************
*平台:IAR for STM8 V2.10.4
*主控:STM8S003F3
**********************************************************/
#include "stm8s.h"
#include "led.h"
#include "delay.h"
int main(void)
{
LED_Init(); //LED初始化
Delay(); //延时初始化
while(1)
{
LED_Not(0);
Delay_ms(500);
}
}
led.c
#include "led.h"
void LED_Init(void)
{
//定义LED的管脚的模式 推挽-输出高电平-低速
//GPIO_MODE_OUT_PP_LOW_SLOW
//本来可以写成一句 GPIO_Init(GPIOC,GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6,GPIO_MODE_OUT_PP_HIGH_SLOW);
//但是IAR的软件这样写会出警告,所以只能分开写
GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_HIGH_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_HNIB,GPIO_MODE_OUT_PP_HIGH_SLOW);
}
//LED控制引脚取反
void LED_Not(int n)
{
switch(n)
{
case 0: GPIO_WriteReverse(GPIOC, GPIO_PIN_3);
break;
case 1: GPIO_WriteReverse(GPIOC, GPIO_PIN_4);
break;
case 2: GPIO_WriteReverse(GPIOC, GPIO_PIN_5);
break;
case 3: GPIO_WriteReverse(GPIOC, GPIO_PIN_6);
break;
}
}
编译下载后就能看到LED一闪一闪的
上一篇:单片机引脚控制继电器最简单的电路方式
下一篇:单片机系统时钟与实时时钟有什么区别
推荐阅读最新更新时间:2024-03-16 16:10