STM8单片机GPIO口输入、按键检测、代码功能实现详解

STM8单片机教程-06  GPIO口输入(按键检测)

 

注意:本文案需要配合无际单片机编程-STM8单片机教程视频学习。

注意:本文案需要配合无际单片机编程-STM8单片机教程视频学习。

一 本节课的目标:

  • 掌握单片机的GPIO口的输入功能
  • 按键功能的检测
  • 通过按键控制LED灯的亮灭
    • SW3按键按下LED2 灭
    • SW4 按键按下LED2 亮

 

二 硬件介绍:

1.打开原理图,

如下图:我们可以看到 原理图上 红色框选的部分。 红色框选的部分,就是本节课   需要使用的原理图部分

 

2.本节课用到的单片机资源:

单片机GPIO口:PC1  PC4

 

3.原理简单分析:

我们以按键SW4为例,来简单的分析一下设计原理。

 

①按键按下:

  • 按键未按下:  PC1          高电平
  • 按键按下:     0.033V     低电平

如果按键按下,按键导通,则PC4 和GND连通,   PC4低电平

 

②按键松开:

按键送开,因R19上拉电阻,所以PC1 端口是高电平。

特别说明:   PC2 PC3 PC4  设计没有  上拉电阻,是因为单片机的内部有上拉电阻。所以不需要外部再设计。  PC1口没有上拉电阻。所以增加了R19上拉电阻。

 

三  单片机GPIO相关寄存器的介绍(参考上章节)

(省略)

 

四  实现代码

( 代码讲解 详见视频)

#include “stm8l10x.h”

#define LED_GPIO_PORT  GPIOA

#define LED_GPIO_PINS  GPIO_Pin_3

#define SW3_GPIO_PORT  GPIOC

#define SW3_GPIO_PINS  GPIO_Pin_4

#define SW4_GPIO_PORT  GPIOC

#define SW4_GPIO_PINS  GPIO_Pin_1

void Delay(uint16_t nCount)

{

    while (nCount != 0)

    {

        nCount–;

    }

}

void main(void)

{

    GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);

    GPIO_Init(SW3_GPIO_PORT, SW3_GPIO_PINS, GPIO_Mode_In_PU_No_IT);

    GPIO_Init(SW4_GPIO_PORT, SW4_GPIO_PINS, GPIO_Mode_In_FL_No_IT);

    GPIO_SetBits(LED_GPIO_PORT, LED_GPIO_PINS);

    while (1)

    {

        if(GPIO_ReadInputDataBit(SW3_GPIO_PORT,SW3_GPIO_PINS)== 0)

        {

          Delay(10000);

          if(GPIO_ReadInputDataBit(SW3_GPIO_PORT,SW3_GPIO_PINS) == 0)

          {

            while(GPIO_ReadInputDataBit(SW3_GPIO_PORT,SW3_GPIO_PINS) == 0);

            GPIO_ResetBits(LED_GPIO_PORT, LED_GPIO_PINS);

          }

        }

        if(GPIO_ReadInputDataBit(SW4_GPIO_PORT,SW4_GPIO_PINS) == 0)

        {

          Delay(10000);

          if(GPIO_ReadInputDataBit(SW4_GPIO_PORT,SW4_GPIO_PINS) == 0)

          {

            while(GPIO_ReadInputDataBit(SW4_GPIO_PORT,SW4_GPIO_PINS) == 0);

            GPIO_SetBits(LED_GPIO_PORT, LED_GPIO_PINS);

          }

        }     

    }

}

 

五  功能测试

功能测试正常.  通过视频课程演示。

给TA买糖
共{{data.count}}人
人已赞赏
单片机百科单片机自学指南

STM8单片机IO口输出、标准库函数、对应寄存器,代码实现、程序烧录详解

2023-5-25 11:46:26

单片机百科单片机自学指南

STM8单片机外部中断工作原理、相关寄存器、代码功能实现详解

2023-5-25 12:40:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧