STM8S_库函数_按键扫描控制LED

大家好,我是单片机爱好者-MCU起航。这里说下使用库函数方式控制STM8S103F3P6的GPIO,扫描外部按键,然后控制LED开关。

首先看原理图,这里使用我设计的地心一号的开发板做演示:

如图所示,LED依然使用PB4控制的,按键使用PC3外接的按键。普通按键KEY电路上没有外接上拉电阻,这里使用单片机内部的上拉电阻。程序如下:

#include "stm8s.h"

/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
#define LED_GPIO_PORT  (GPIOB)
#define LED_GPIO_PINS  (GPIO_PIN_4)
void Delay(uint16_t nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {   
    nCount--;
  }
}
void main(void)
{
  /* Initialize I/Os in Output Mode */
  GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_MODE_OUT_PP_HIGH_FAST);
  GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);

  while (1)
  {
    /* Toggles LEDs */
    if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_3) == 0)
    {
      Delay(100);
       if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_3) == 0)
       {
         GPIO_WriteReverse(GPIOB, GPIO_PIN_4);
         while(GPIO_ReadInputPin(GPIOC,GPIO_PIN_3) == 0);
       }
    }
  }
  
}

首先看宏定义,那里定义了要初始化的GPIO的组和编号,组为GPIOB,编号为GPIO_PIN_4。

首先是PC3和PB4的初始化,PC3初始化为输入、带上拉电阻、无中断模式。

GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);

PB4跟上一节有些不一样,初始化为推挽输出、管脚高电平、高速模式。

GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_MODE_OUT_PP_HIGH_FAST);

这里简单说下STM8S的GPIO支持哪些模式:

GPIO_MODE_IN_FL_NO_IT = 浮空输入,无中断

GPIO_MODE_IN_PU_NO_IT = 带上拉电阻输入,无中断

GPIO_MODE_IN_FL_IT = 浮空输入,有中断

GPIO_MODE_IN_PU_IT =带上拉电阻输入,有中断

GPIO_MODE_OUT_OD_LOW_FAST = 开漏输出,IO默认低电平,翻转速度为10MHZ高速

GPIO_MODE_OUT_PP_LOW_FAST =推挽输出,IO默认低电平,翻转速度为10MHZ高速

GPIO_MODE_OUT_OD_LOW_SLOW =开漏输出,IO默认低电平,翻转速度为2MHZ低速 GPIO_MODE_OUT_PP_LOW_SLOW =推挽输出,IO默认低电平,翻转速度为2MHZ低速

GPIO_MODE_OUT_OD_HIZ_FAST =开漏输出,高阻态,翻转速度为10MHZ高速 GPIO_MODE_OUT_PP_HIGH_FAST =推挽输出,IO默认高电平,翻转速度为10MHZ高速

GPIO_MODE_OUT_OD_HIZ_SLOW =开漏输出,高阻态,翻转速度为2MHZ低速

GPIO_MODE_OUT_PP_HIGH_SLOW =推挽输出,IO默认高电平,翻转速度为2MHZ低速

初始化的时候根据自己的需求进行选择。

while(1)里的内容也比较简单,通过函数“GPIO_ReadInputPin(GPIOC,GPIO_PIN_3)”读取PC3管脚的状态,为低电平的时候PB4的输出进行翻转。当然,读取PC3的时候,要考虑消抖的操作。

要获取该程序完整的工程文件,可以关注公众号:单片机爱好者,然后回复关键词:STM8S。可以获取完整的下载链接,里面包含工程文件、视频、PPT、数据手册等所有相关资料。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据