STM8L151C8学习笔记1:LED驱动

本文是STM8L151C8学习笔记,聚焦LED驱动。介绍了开启相应时钟、初始化GPIO模式及拉高/置低点亮LED的操作。还提及硬件电路部分,代码编写中借鉴了大佬的delay代码。总结指出LED点灯较简单,只需确定Delay函数时钟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM8L151C8学习笔记1:LED驱动


按以往的单片机开发流程,第一步先来点个灯。
基于STM8与STM32同属STM系列,要想点亮一个灯,所需步骤不过就三步:

  1. 开启相应时钟

  2. 初始化GPIO模式

  3. 拉高/置低来点亮LED

硬件电路

主控部分:
STM8主控

LED电路:
LED

代码编写

1.led.c 部分内容如下:

#include "led.h"

/*GPIO*/
#define         LED_PORT         GPIOA
#define         LED1_PIN         GPIO_Pin_6
#define         LED2_PIN         GPIO_Pin_7
/*LED*/
#define         LED1             GPIO_Pin_6
#define         LED2             GPIO_Pin_7

/*Functions*/
void Led_Init(void)
{
  /*GPIO Init*/
  GPIO_Init(LED_PORT,LED1_PIN|LED2_PIN,GPIO_Mode_Out_PP_Low_Slow);
  /*Led Init*/
  GPIO_ResetBits(LED_PORT, LED1_PIN|LED2_PIN);
}

void Led_Set(GPIO_Pin_TypeDef ledx, uint8_t state)
{
  if(state == 1)        GPIO_SetBits(LED_PORT,ledx);
  else                  GPIO_ResetBits(LED_PORT,ledx);
}

2.main.c 部分内容如下:

/* Includes ------------------------------------------------------------------*/
#include "stm8l15x.h"
#include "led.h"
/* Parameter Definition ------------------------------------------------------------------*/
uint8_t LED1_State = 1,LED2_State = 0;
/* Functions ------------------------------------------------------------------*/
/**
  * @brief  CLK Config.
  * @param  None
  * @retval None
  */
void Clk_Config(void)
{
   CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//系统1分频,16M
}
/**
  * @brief  LED Flash.
  * @param  None
  * @retval None
  */
void LED_Flash(void)
{
  Led_Set(LED2, LED2_State);
  Led_Set(LED1, LED1_State);
  LED1_State = !LED1_State;
  LED2_State = !LED2_State;
  Delay_ms(500); 
}
/* Main Functions ------------------------------------------------------------------*/
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
  /*System Init*/
  Clk_Config();
  Led_Init();
  /* Infinite loop */
  while (1)
  {
    LED_Flash();
  }
}

其中Delay_ms()函数之前自己尝试写过,发现延时时间并不精准后,借鉴了大佬写的delay代码

总结

LED点灯相对简单,因为STM8与STM32不同,其中GPIO并没有单独的时钟,所以只需确定Delay函数的时钟就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值