按键控制LED灯

198 阅读2分钟

「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战

知识介绍

单片微型计算机简称单片机(MCU(MicrbControl Unit)),我们自己的个人计算机中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。单片机又有8位的如51单片机、16位的如MSP430、32位的如STM32,通常我们说的多少位通常指的是内核(CPU)一次处理的数据宽度。也就是说内核一次处理的位数越多单片机的计算速度就越快,性能也就越强悍。

STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多32位单片机中脱颖而出。

STM32芯片内部可以粗略划分两部分:内核+片上外设。如果与电脑类比,内核与片上外设就如同电脑的CPU与主板、内存、显卡、硬盘的关系。 芯片内部内核和外设分别是两个公司设计的,那他们该怎么联系到一起协同高效的工作呢?答案就是总线,学过计算机组成原理的同学都应该知道计算机五大组成部分运算器、控制器、存储器、输入设备、输出设备他们之间的通信就是通过总线。我们上面也说了单片机就是一个集成在硅片上的计算机,所以他内部的连接关系也是靠总线。

工程文件放置

图片

图片

只有在添加进这一串之后,才能使用头文件集合 stm32f10x_conf.h

图片

选择类型

图片

初始化时钟从哪找

在stm32f10x_rcc.c中。

图片

断言函数

图片

KEY.c

#include "key"

void KeyInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOC, ENABLE);
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//设置端口模式为浮空输入
    GPIO_Init(GPIOC, &GPIO_InitStructure);
}


int anjian(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  u8 anjianbianliang;
  int anjianzhi;
  anjianbianliang=GPIO_ReadInputDataBit(GPIOx, GPIO_Pin);
  if(anjianbianliang==1)
    anjianzhi=1;
  
  else if(anjianbianliang==0)
    anjianzhi=0;
  return anjianzhi;

}

main.c

#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
#include "LED.h"
#include "KEY.h"
 int main(void)
{
LED_GPIO_Config();
 Key_Init();
   while (1) 
 {

 if(anjian(GPIOC,GPIO_Pin_8)==0)
        {
             LED_G(ON);      
        }
  if(anjian(GPIOC,GPIO_Pin_9)==0)
       {
          
  LED_G(OFF);                        
        }
 }



仿真图

图片