STM8S003F3控制LED

一、概述

不管什么单片机,想要控制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的驱动。[根据本人经验,插上下载器安装最容易安装成功]
二、硬件电路图

STM8S003F3控制LED_第1张图片

三、需要用到的函数库

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一闪一闪的

你可能感兴趣的:(STM8S003F3)