一、概述
不管什么单片机,想要控制LED灯,只能是通过控制单片机芯片的I/O引脚电平的高低来实现。
同样在ST单片机上,I/O引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为 GPIO (General-purpose I/O)。三、需要用到的函数库
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;
}
}