stm32f103c8t6黑色核心板按键控制LED项目

导航:stm32教程传送门🧭🏔🌋🛤🏞🏜

1.0前言

对于菜鸟开发新单片机,通常从简单控制着手,下面我们将*学习stm32黑色核心板 GPIO 输入输出信号,采用简单的按键输入来控制输出LED的亮灭!*
在这里插入图片描述

2.0示例详解

2.1硬软件选择

硬件平台软件平台
黑色核心板1块keil v5
LED1颗stm32cubemx
自复位按键1颗
面包板1块
220Ω电阻2颗
杜邦线若干

keil v5安装教程:https://www.bilibili.com/video/BV1q4411d7RX?p=1
stm32cubemx:https://www.bilibili.com/video/BV1q4411d7RX?p=2

2.2实验原理

使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。将PA0引脚设置成输入引脚,程序得到PA0引脚的(按键操作)输入状态,并根据其输入电平的高低来控制PC13输出,来控制LED,实现按一次LED亮,再按一下,LED灭的功能。
本示例所用的最小系统板原理图:
在这里插入图片描述
按键控制LED原理图
在这里插入图片描述
注意:此图LED灯引脚接反了,需要对调一下

3.0操作流程

3.1新建STM32 Cube MX工程

  • 双击桌面STM32CubeMX工具,然后在CubeMX中菜单 File中点New Project ;
    在这里插入图片描述
  • 在新弹出的界面中的搜索框中输入 “stm32f103c8” ,并双击右侧栏中列出的STM32F103C8选用该芯片;
    在这里插入图片描述
  • 弹出如下图所示界面,至此工程创建完成!!!😀😀😀接下是就是配置工程;
    在这里插入图片描述

3.2配置工程

  • 配置系统伏仿真调试接口, 在System Core 目录下单击SYS选项,将其中的Debug选项选为Serial Wire, 此时PA13 PA14引脚会被占用,配置图如下:
    在这里插入图片描述
  • 配置系统时钟源,在System Core 目录下单击RCC选项,将其中的High Speed Clock( HSE )选项选为Crystal/ceramic resona…, 此时PD0 PD1引脚会被占用,配置图如下:
    在这里插入图片描述
  • 配置GPIO PA0 为GPIO _Input及 PC13 为GPIO _Output引脚,详细配置如下;
    在这里插入图片描述
  • 配置系统时钟树,将工程界面切换到Clock Configureation 界面,完成如下配置。
    在这里插入图片描述
  • 配置代码生成,工程界面切换到Project Manager 界面,在界面左侧单击Project项,将其设置成如下图所示( 本人设置工程路径在C:\Users\Asus\Documents\STM32_examplel目录,工程名为LED_key, 开发环境为 MDK-ARM v5 )。

在这里插入图片描述

  • 在界面左侧单击Code Generator项,将其设置成如下图所示( 只拷贝所需文件到工程,为每个接口生成独立的初始化头文件和源文件,将所有未使用的引脚设为模拟输入)。

在这里插入图片描述

  • 生成代码,单击工程界面中”GENERATE TOOL” 开始生成代码,代码生成后弹出是否打开工程对话框,单击“Open Project”打开创建的工程,即配置工程完成接下来是keil v5开发和调试。

在这里插入图片描述

3.3keil v5开发

  • 修改部分代码,在代码工程(MDK/keil)中的 main.c 中 man函数中如下红框中代码(本人采用汉化背景美化可参照):

在这里插入图片描述
框框代码如下(复制粘贴即可)


	if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET )
	{
		HAL_Delay(50);  // 按键消抖延时
//    HAL_Delay(1000);  // 按键消抖延时
//		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
//		HAL_Delay(1000);  // 按键消抖延时
//		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
      if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET )
      {
       HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
           // 等待按键释放
       while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET);
      }
	}
  • 编译该工程,确认代码书写正确并且符合控制要求;
    在这里插入图片描述

  • 烧录代码,在代码工程中单击“Options for Target” 图标,在弹出的窗口中选中“Debug”页,选择相应的烧录工具(如本示例所用是jlink工具,需要安装驱动,可参照安装教程),然后单击右侧“Setting”按钮,将Port 设为“SW”, 最大速度建议不要超过5M(如果仿真调式工具接线过长,避免干扰可以将最大速度设为100K,这样可以保证烧录成功)。
    在这里插入图片描述
    在这里插入图片描述

  • 接着选“flash Download”页,勾选“Reset and Run”,并确保其它内容如下图所示:

在这里插入图片描述

  • 设置完上述设置后,便可进行下载操作,将调试仿真工具中的与最小系统板连接好,采用BOOT0-1和BOOT1-0的SPI通道,在工程中点Download 按钮,或按F8快捷键进入下载,下载完成后会出现如下图所示提示信息。
    在这里插入图片描述

3.4keil v5调试

  • 到此为止,所有准备工作已经配置完成,进入调试环节,核心板启动方式和排针对应如下:
BOOT0BOOT1MODE
0XFLASH
11SRAM
10ISP
  • BOOT0-0和 BOOT1-X 默认是 flash 的启动方式;

  • 硬件接线
    在这里插入图片描述

  • 所有准备工作就绪,实现了按一下按键(PA0引脚由高变低一次),LED输出PC13状态实现一次反转,见演示视频。
    在这里插入图片描述

4.0 总结

  • 本篇通过stm32黑色核心板 GPIO 输入输出信号,采用stm32cubemx和keil v5组合开发,通过简单的按键输入来控制输出LED的亮灭。。主要难度在控制原理以及项目移植开发,值得新手一试!!!😃😃😃
  • 在以后的博文中我们将学会用stm32常用传感器和执行器从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力
  • 本人工程文件1,2
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2345VOR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值