03CubeMx+Keil+Proteus仿真STM32

编程

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》

源代码:https://github.com/LanLinnet/STM33F103R6

项目要求

按下按钮控制LED灯的亮灭。

硬件设计

  1. 在第一节的基础上,在Proteus中添加电路如下图所示。

  2. 打开CubeMX,按照建立工程,配置PC0引脚为GPIO_Output,PC1引脚为GPIO_Input。点击“Generator Code”生成Keil工程。

软件编写

  1. 点击“Open Project”在Keil中打开工程,双击“main.c”文件。

  2. 本次仿真我们新用到读引脚状态函数HAL_GPIO_ReadPin(),其官方文档API介绍如下图所示。

  3. 由于按键按下时,其内部金属箔通断瞬间在机械振动的作用下会出现10ms左右的通断不稳定状态,我们在这里采用软件消抖(延时)的方式消除其影响。

    在while(1)循环中输入以下代码

    if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)==0)  //判断按键是否被按下,按下为低电平

    {

    HAL_Delay(20); //软件消抖

    if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)==0) //再次判断按键是否被按下,按下为低电平

    {

    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0); //PC0电平反转

    while(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)==0); //阻塞

    HAL_Delay(20); //软件消抖

    }

    }

联合调试

  1. 点击运行,生成HEX文件。
  2. 在Proteus中加载相应HEX文件,点击运行,可以看到LED灯点亮。


    按下按钮,LED灯熄灭

以上是 03CubeMx+Keil+Proteus仿真STM32 的全部内容, 来源链接: utcz.com/z/520412.html

回到顶部