stm32利用CubeMX按键控制数码管加减数

news2024/9/21 5:50:10

首先画电路图:

接下来配置CubeMX:

设置好后生成MDK工程文件:

用keil打开工程:

添加部分代码:

/* USER CODE BEGIN Includes */
uint16_t duan[]={0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
uint16_t num=0;

/* USER CODE END Includes */

void display(void);  //声明显示函数

编写while循环中的代码:

while (1)
  {
      display();
      if(HAL_GPIO_ReadPin(key1_GPIO_Port,key1_Pin)== 0)
      {
        num++;
            if(num > 99)
          {
            num=99;
          }
          while(HAL_GPIO_ReadPin(key1_GPIO_Port,key1_Pin)== 0);
      }
      
      if(HAL_GPIO_ReadPin(key2_GPIO_Port,key2_Pin)== 0)
      {
        num--;
        if(num < 0)
      {
        num=0;
      }
          while(HAL_GPIO_ReadPin(key2_GPIO_Port,key2_Pin)== 0);
      }
      
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

编写显示函数:

/* USER CODE BEGIN 4 */
void display(void)
{
    //HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)  // 单个位端口置位函数
    GPIOA->ODR=0xFFFF;                                         // GPIOA的16位都设置成1 数码管关闭显示
    HAL_GPIO_WritePin(shi_GPIO_Port,shi_Pin,GPIO_PIN_SET);     // 数码管十位置1
    HAL_GPIO_WritePin(ge_GPIO_Port,ge_Pin,GPIO_PIN_RESET);     // 数码管个位置0
    GPIOA->ODR = duan[num/10];                                 // 数码管十位显示num的十位
    HAL_Delay(2);                                               // 延时2毫秒
    
    GPIOA->ODR=0xFFFF;                                         // GPIOA的16位都设置成1 数码管关闭显示
    HAL_GPIO_WritePin(shi_GPIO_Port,shi_Pin,GPIO_PIN_RESET);   // 数码管十位置0
    HAL_GPIO_WritePin(ge_GPIO_Port,ge_Pin,GPIO_PIN_SET);       // 数码管个位置1
    GPIOA->ODR = duan[num%10];                                 // 数码管个位显示num的个位
    HAL_Delay(2);                                              // 延时2毫秒
}

/* USER CODE END 4 */

最后编译成hex文件导入proteus中就可以仿真啦!

上面的按键加,下面的按键减。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

平时积累的FPGA知识点(10)

平时在FPGA群聊等积累的FPGA知识点&#xff0c;第10期&#xff1a; 41 ZYNQ系列芯片的PL中使用PS端送过来的时钟&#xff0c;这些时钟名字是自动生成的吗&#xff1f; 解释&#xff1a;是的。PS端设置的是ps_clk&#xff0c;用report_clocks查出来的时钟名变成了clk_fpga_0&a…

windows如何恢复删除文件?「2024恢复策略」

在数字时代&#xff0c;数据无疑是最为宝贵的财富之一。然而&#xff0c;无论是因为误操作、病毒感染还是其他各种原因&#xff0c;我们时常会面临文件被误删的风险。当重要的文件从Windows系统中消失时&#xff0c;许多用户都会感到焦虑和无助。那么&#xff0c;Windows系统下…

解锁VIP会员漫画:用Python爬虫轻松实现高清漫画下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块…

docker运行onlyoffice,并配置https访问【参考仅用】

官方说明&#xff1a; Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICEhttps://helpcenter.onlyoffice.com/installation/docs-developer-install-docker.aspx 一、容器端口、目录卷映射 sudo docker run --name容器名称 --restartalways -i -t -d -p…

【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.冯诺依曼体系结构特…

实习日志28

1.医院账套系统换新&#xff0c;卡片数据转移 1.1.修改旧导出的Excel 1.2.尝试导入新系统 1.3.修改导入数据再次导入即可 这个系统做的限制条件比较多&#xff0c;代码健壮性不错。 先在Excel表格里改好批量的&#xff0c;再导入检查&#xff0c;改一些细节的比较快捷。 2.…

Three.js初学(3)

Three.js初学&#xff08;3&#xff09; 动画渲染循环1. 请求动画帧2. 旋转动画 Canvas画布布局和全屏常见几何体渲染器设置GUI.js库1. 库的引入2. 如何使用初步调试进阶调试界面分组 动画渲染循环 1. 请求动画帧 requestAnimationFrame实现周期性循环执行 requestAnimationF…

SpringBoot:自定义starter

点击查看&#xff1a;LearnSpringBoot08starter 点击查看&#xff1a;LearnSpringBoot08starterTest 点击查看更多的SpringBoot教程 一、主要流程 1. 先创建空的project 2. 打开空的project 结构 图选中model 点击 3. 创建 model&#xff08;Maven&#xff09;启动器 提…

来聊聊向量查询

本文将从基本概念开始&#xff0c;讨论与向量查询相关的技术与使用。向量查询是一种复杂的数据检索技术&#xff0c;它侧重于查询与数据条目相关的上下文含义&#xff0c;而并非简单的文本匹配。 在软件项目中&#xff0c;开发人员往往会尽力搜寻各种数据库优化技术&#xff0…

mapbox面图层标注

mapbox并没有一个属性类似于’text-field’的symbol图层的直接可以标注的办法&#xff0c;这里笔者提供两种其他的面图层标注的办法用来大家参考 效果图 方案一 把面图层当做点图层直接展示 在mapbox里面&#xff0c;面图层是可以直接渲染成线图层和点图层的&#xff0c;这里…

Aigtek高压放大器是什么东西做的

在许多电子应用中&#xff0c;需要将低电压信号放大到较高电压以满足特定的需求。为了实现这个目标&#xff0c;高压放大器被广泛采用。高压放大器是一种专用电子设备&#xff0c;使用特定的电路和器件来增益输入信号的电压。它通常由以下几个主要组成部分构成。 电源供应 高压…

WRF WPS : namelist 学习笔记

WPS & share 采用ARW方式进行模拟&#xff0c;除了ARW还有NMM,不过科研上常用ARW: wrf_core ‘ARW’最大的嵌套层数为3层&#xff0c;初学者一般是从一层开始逐步加多: max_dom 3 # max_dom 2设置模式开始和结束 的时间&#xff0c;从左到右依次是第一层第二层和第三…

轻松掌握opencv的8种图像变换

文章目录 opencv的8种图像变换1. 图像放大、缩小2. 图像平移3. 图像旋转4. 图像仿射变换5. 图像裁剪6. 图像的位运算&#xff08;AND, OR, XOR&#xff09;7. 图像的分离和融合8. 图像的颜色空间 opencv的8种图像变换 1. 图像放大、缩小 我们先看下原图 import cv2 import ma…

文献速递:GAN医学影像合成--基于生成对抗网络的肺部图像分类的多域医学图像翻译生成

文献速递&#xff1a;GAN医学影像合成–基于生成对抗网络的肺部图像分类的多域医学图像翻译生成 01 文献速递介绍 在2019年底&#xff0c;一种称为2019冠状病毒病&#xff08;COVID-19&#xff09;的新型冠状病毒肺炎出现&#xff0c;迅速成为全球性大流行。感染COVID-19可以…

本机防攻击简介

定义 在网络中&#xff0c;存在着大量针对CPU&#xff08;Central Processing Unit&#xff09;的恶意攻击报文以及需要正常上送CPU的各类报文。针对CPU的恶意攻击报文会导致CPU长时间繁忙的处理攻击报文&#xff0c;从而引发其他业务的中断甚至系统的中断&#xff1b;大量正常…

IOS和Android系统架构

IOS的系统架构 iOS的为Objective-C和Swift&#xff0c;Objective-C的优势是效率高但比较“唯一”。 响应顺序&#xff1a;Touch--Media--Service--Core架构 分为四个层次&#xff1a;核心操作系统层&#xff08;core OS layer&#xff09;、核心服务层&#xff08;Core Serv…

STM32Cubemx TB6612直流电机驱动

一、TB6612FNG TB6612是一个支持双电机的驱动模块&#xff0c;支持PWM调速。PWMA、AIN1、AIN2 为一组控制引脚&#xff0c;PWMA 为 PWM 速度控制引脚&#xff0c;AIN1、AIN2 为方向控制引脚&#xff1b;PWMB、BIN1、BIN2 为一组控制引脚&#xff0c;PWMB 为 PWM 速度控制引脚&…

一种基于动态水位值的Flink调度优化算法(flink1.5以前),等同于实现flink的Credit-based反压原理

优化flink反压 说明1 flink反压介绍1.1 介绍1.2 大数据系统反压现状1.4 flink task与task之间的反压1.5 netty水位机制作用分析 2 反压优化算法3 重点&#xff01; 但是 可但是 flink1.5以后的反压过程。4 flink反压问题的查找瓶颈办法 说明 首先说明&#xff0c;偶然看了个论…

短剧小程序系统,重塑视频观看体验的科技革命

随着科技的飞速发展&#xff0c;人们对于数字化内容的消费需求也在不断增长。在这个大背景下&#xff0c;短剧小程序作为一种新型的视频观看方式&#xff0c;正逐渐受到大众的青睐。本文将探讨短剧小程序的发展背景、特点以及市场前景&#xff0c;分析其在重塑视频观看体验方面…

哪个牌子的护眼台灯比较好用?纯干货护眼台灯品牌推荐

有些家长陪孩子写作业的时候发现他们总是在揉眼睛&#xff0c;学习时间久了还会用力眨眼睛。其实无论是白天还是晚上&#xff0c;孩子在家学习&#xff0c;看书&#xff0c;搭积木等&#xff0c;如果灯光不给力&#xff0c;一定要用台灯来给孩子补光&#xff0c;避免因为光线环…