当前位置: 首页 > news >正文

第十四届蓝桥杯嵌入式国赛

一. 前言

        本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。

二. 题目概述

        下面是总体框架图:

本次国赛题目主要设计到使用LCD显示4个界面,包括 实时数据界面,报警参数界面,报警统计界面以及最后的回放设置界面(这应该对于大多数人来说是最难的,包括我自己,当时在做的时候没有理解它所说的是什么含义,好在后面还是开窍了)。

题目要求实现的功能概述如下:

主要设计到PWM波的输出和PWM的输入捕获,ADC数模转换数据的采集,以及通过配置相关的LED和LCD来展示一些效果和结果,DS18B20来获取环境温度数据等等。

题目大概就讲到这里,想知道具体题目的小伙伴们可去这里:第十四届蓝桥杯嵌入式国赛题目

三. CubeMx的相关配置

        由于要使用到LED和LCD,所以就可以根据产品手册确定引脚位置,将它们在CubeMx中的状态都设置为GPIO_Output。这个比较简单,要是有小伙伴有疑问可去我另外一篇博客关于蓝桥杯嵌入式学习中查看。如下所示,为了方便,这里我把整个国赛需要配置的芯片GPIO口都配置好,后面也会提到CubeMx左侧的配置的。

关于LCD相关代码,我们可以直接使用官方提供的资料代码,这在比赛中都是会给出的,所以这里我也不再展示有关LCD的相关代码了。

下面我们来一步一步完成这道国赛题目。首先因为涉及到数据界面之间的切换,所以我们先来搞好按键中断部分和LCD的显示,代码如下:

#include "interrupt.h"struct keys key[4]={0,0,0};
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==TIM4){key[0].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0);key[1].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1);key[2].key_sta=HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2);key[3].key_sta=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);}for(int i=0;i<4;i++){switch(key[i].judge_sta){case 0:{if(key[i].key_sta==0) key[i].judge_sta=1;key[i].long_time=0;break;}case 1:{if(key[i].key_sta==0){key[i].judge_sta=2;}else{key[i].judge_sta=0;}break;}case 2:{if(key[i].key_sta==1){key[i].judge_sta=0;if(key[i].long_time<70)key[i].single_flag=1;}else{key[i].long_time++;if(key[i].long_time>70)key[i].long_flag=1;}break;}}}
}

上面就是按键处理的代码,为了避免定时器之间的冲突,这里我选择了定时器4来控制按键的中断。在CubeMX中的配置如下:

由于题目还要求我们输入输出频率和占空比,这里我们可以选择定时器2来实现,为了获得占空比可以使用定时器2的两个通道,一个处于上拉状态,另外一个则相反。配置如下:

这里设置了通道一为直接模式,通道二为间接模式,下面的分频系数就设置为80-1就好了,重装载值就让它默认。 下面就给通道一和通道二设置了上拉和下拉。

 

获取相关频率和占空比的代码实现如下所示:

double ccrla_F=0;
double ccrlb_F=0;
double ccrl_F=0;
float ccrl_D=0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==TIM2){if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1){ccrla_F=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);ccrlb_F=HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2);__HAL_TIM_SetCounter(htim,0);ccrl_F=(80000000/80)/ccrla_F;ccrl_D=(ccrlb_F/ccrla_F)*100;HAL_TIM_IC_Start(htim,TIM_CHANNEL_1);HAL_TIM_IC_Start(htim,TIM_CHANNEL_2);}}
}

 其他的一些功能实现代码由于比较长,我这里就不再展示出来。关于整个国赛题目的完整CubeMx配置和实现所有功能的完整源代码我都放在了我主页的资源当中,如果对此有需要的小伙伴们可以拿去使用,如不能使用都可以直接私信我获取。

四. 最终实现展示

 

相关文章:

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目&#xff0c;包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题&#xff0c;可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …...

(k8s)kubernetes集群基于Containerd部署

资源列表 基础环境 一、基础环境准备 1.1、关闭Swap分区 1.2、添加hosts解析 1.3、桥接的IPv4流量传递给iptables的链 二、准备Containerd容器运行时 2.1、安装Containerd 2.2、配置Containerd 2.3、启动Containerd 三、部署Kubernetes集群 3.1、安装Kubeadm工具 3.2、…...

python内置模块pathlib.Path类操作目录和文件

python自带的pathlib模块提供了很多路径相关的功能&#xff0c;而pathlib.Path 是pathlib 模块中的一个核心类&#xff0c;它代表了文件系统中的一个路径&#xff0c;实现功能比如创建、删除、移动文件&#xff0c;读取和写入文件内容&#xff0c;遍历目录等。 Path 类跟os.pa…...

react开发环境搭建

文章目录 准备工作创建 React 项目使用 create-react-app 创建 React 项目使用 Vite 创建 React 项目启动项目效果安装出现的情况 react项目文件讲解1. 项目根目录2. 其他可能的目录和文件3. 配置文件 准备工作 Node.js 安装方法&#xff1a; 方式一&#xff1a;使用 NVM 安装…...

python 逻辑语句简记

什么语言都少不了逻辑处理语句的使用&#xff0c;python的逻辑处理语句有自身的使用特点&#xff0c;稍稍总结记录一下 一、断言 assert 条件 条件触发&#xff0c;程序执行中断 二、条件语句 if 条件&#xff1a; 执行内容 三、循环语句 while 条件&#xff1a; 循环体…...

8.进销存系统(基于springboot的进销存系统)

目录 1.系统的受众说明 2.开发技术与环境配置 2.1 SpringBoot框架 2.2 Java语言简介 2.3 MySQL环境配置 2.4 idea介绍 2.5 mysql数据库介绍 2.6 B/S架构 3.系统分析与设计 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3经济可行性 3.4.1 数据库…...

深入理解主键回显:提升数据操作效率与准确性

在软件开发的世界中&#xff0c;主键回显是一个常常被提及但又容易被忽视其重要性的概念。今天&#xff0c;我们就来深入探讨一下主键回显的奥秘。 一、什么是主键回显&#xff1f; 在数据库设计中&#xff0c;主键是用于唯一标识表中每一行记录的字段。而主键回显&#xff0…...

springboot+阿里云物联网教程

需求背景 最近有一个项目,需要用到阿里云物联网,不是MQ。发现使用原来EMQX的代码去连接阿里云MQTT直接报错,试了很多种方案都不行。最终还是把错误分析和教程都整理一下。 需要注意的是,阿里云物联网平台和MQ不一样。方向别走偏了。 概念描述 EMQX和阿里云MQTT有什么区别…...

QT Creator cmake 自定义项目结构, 编译输出目录指定

1. 目的 将不同的源文件放到不同的目录下进行管理&#xff0c; 如下&#xff1a; build: 编译输出目录 include: 头文件目录 rsources: 资源文件目录 src: cpp文件目录 2. 创建完cmake工程后修改CMakeLists.txt 配置 注 &#xff1a; 这里头文件目录是include, 所以在includ…...

lunar无第三方依赖的公历、农历、法定节假日...日历工具库

文章目录 介绍maven示例示例&#xff08;前后端&#xff09;网址文档 介绍 lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)、道历、佛历工具&#xff0c;支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、…...

(全网最细)ELF文件详解

ELF文件是什么 ELF文件是一种对象文件格式。ELF文件的全程是&#xff08;Executeable and Linking Format&#xff0c;可执行可链接格式&#xff09;。ELF文件格式主要有三种&#xff1a; 可重定向文件。可重定向文件就是可以用于和其他对象文件链接来创建一个可执行或者可分…...

Leetcode面试经典150题-39.组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如…...

海外云市场分析

海外云市场数据洞察 2024 H1 季度数据 H1季度,全球云基础设施服务指数同比增长21%,达到798亿美元 (相比去年增加134亿美元),三大云服务提供商— AWS,微软Azure 和GCP 营收总增长率为24%,占总市场66%。 其中三大云厂商同比营收增长排序(2024 H1):微软 31%,G…...

显示和隐藏图片【JavaScript】

使用 JavaScript 来实现显示和隐藏图片。下面是一个简单的示例&#xff0c;展示如何通过按钮点击来切换图片的可见性。 实现效果: 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name&…...

Java调用数据库 笔记06 (修改篇)

1.创建Java的普通class类 2.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 3.驱动管理类调用方法进行连接&#xff0c;得到连接对象 DriverManager.getConnection(url, user, password); 其中设置参数&#xff1a; static final String url "jdbc:my…...

virtualbox中的网络模式,网络设置,固定IP

virtualbox关于网络设置的文档&#xff1a;https://www.virtualbox.org/manual/topics/networkingdetails.html#networkingdetails DHCP Dynamic Host Configuration Protocol&#xff1a;动态主机配置协议&#xff0c;是专门用来给网络中的节点分发IP地址&#xff0c;确保每…...

2025年最新大数据毕业设计选题-Hadoop综合项目

选题思路 回忆学过的知识(Python、Java、Hadoop、Hive、Sqoop、Spark、算法等等。。。) 结合学过的知识确定大的方向 a. 确定技术方向&#xff0c;比如基于Hadoop、基于Hive、基于Spark 等等。。。 b. 确定业务方向&#xff0c;比如民宿分析、电商行为分析、天气分析等等。。。…...

实战C++手写线程池

课程总目录 文章目录 一、项目必备基础概念1.1 并发和并行1.2 多线程的优势1.3 线程的消耗1.4 线程池的优势1.5 线程池的两种模式:fixed模式和cached模式1.6 线程同步之线程互斥1.7 线程同步之线程通信1.7.1 条件变量1.7.2 信号量1.8 项目设计图浏览二、线程池代码展示三、线程…...

Alluxio Enterprise AI on K8s FIO 测试教程

Alluxio Enterprise AI on K8s FIO 测试视频教程 视频为Alluxio Enterprise AI on K8s FIO测试视频教程。fio是业内常用的磁盘与文件系统性能测试工具&#xff0c;下面内容将通过文字方式介绍Alluxio on k8s 进行fio测试的教程。 1. 测试环境 虚拟机规格&#xff1a;ecs.g3i.…...

学习使用在windows系统上安装vue前端框架以及环境配置图文教程

学习使用在windows系统上安装vue前端框架以及环境配置图文教程 1、安装nodejs2、安装vue3、安装Vue-cli脚手架4、安装高版本5、创建vue项目6、启动项目7、配置开发环境8、发布项目 1、安装nodejs 点我查看教程 2、安装vue winR&#xff0c;打开cmd cnpm install vue -g表示安…...

光模块PCB设计学习记录01

/*光模块布局&#xff0c;有错误可以指出&#xff0c;有不足可以补充*/ 光模块PCB布局规划 01导入板框与结构约束导入 这里的outline板框一般由机械提供.dxf文件&#xff0c;板框决定PCB尺寸、器件可用区域和接口位置&#xff1b;成功导入dxf文件后&#xff0c;打开Board Geo…...

CircuitPython微控制器图形保存实战:从屏幕截图到BMP文件生成

1. 项目概述&#xff1a;为什么我们需要在微控制器上保存图形&#xff1f; 在嵌入式开发领域&#xff0c;尤其是当我们使用像Adafruit PyPortal、PyGamer这类带有彩色显示屏的开发板时&#xff0c;图形界面的调试和内容存档一直是个不大不小的痛点。想象一下&#xff0c;你花了…...

ISTA 2A-2011 (2022) 全解析|≤68kg 包装件部分模拟运输测试指南

前言ISTA 2A-2011 (2022) 属于 ISTA 2 系列部分模拟性能测试&#xff0c;专门面向 **≤68kg&#xff08;150lb&#xff09;的单个小型运输包装件 **&#xff0c;是电商小件、3C 数码、小家电、仪器仪表最常用的入门级包装验证标准。它结合基础测试与仿真要素&#xff0c;快速验…...

如何零代码构建专业级在线PPT编辑工具:5大核心技术解析

如何零代码构建专业级在线PPT编辑工具&#xff1a;5大核心技术解析 【免费下载链接】PPTist PowerPoint-ist&#xff08;/pauəpɔintist/&#xff09;, An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing f…...

如何快速打造专业直播画面:OBS StreamFX插件终极指南

如何快速打造专业直播画面&#xff1a;OBS StreamFX插件终极指南 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom…...

如何自动化监控线上问题

要实现线上问题的自动化监控&#xff0c;不能仅停留在工具的堆砌&#xff0c;而需要从体系规划、数据采集、智能告警、动态诊断到流程规范进行全盘设计。以下是基于行业最佳实践的自动化监控构建指南&#xff1a;一、 体系规划与监控点梳理构建自动化监控的第一步是明确“监控什…...

使用Taotoken后我们如何观测与优化大模型API调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken后我们如何观测与优化大模型API调用成本 1. 从黑盒到透明&#xff1a;成本观测的第一步 在接入大模型API的初期&…...

200万像素GC2145摄像头怎么玩?手把手教你用AiPi-Cam-D200开发板快速搭建无线图传

200万像素GC2145摄像头实战指南&#xff1a;零代码玩转AiPi-Cam-D200无线图传 当你拆开AiPi-Cam-D200开发板的包装&#xff0c;看到那块小巧的GC2145摄像头时&#xff0c;可能既兴奋又忐忑——这个看起来像玩具的设备&#xff0c;真能实现专业级的无线图传吗&#xff1f;作为创…...

2026在校大学生进入财会行业学数据分析的价值

一、数据分析在财会行业的重要性数据分析已成为财会行业的核心技能之一&#xff0c;能够帮助从业者优化财务决策、提升审计效率、识别风险并支持战略规划。掌握数据分析能力的财会人员更具竞争力&#xff0c;尤其在数字化转型背景下&#xff0c;企业更青睐具备数据思维的财务人…...

【YOLO目标检测全栈实战】39 多模型流水线:当YOLO遇上OCR和语音合成,如何让四个模型“共线生产”?

DIA DALI,我们把187ms的串行方案优化到15ms,性能提升12倍。但说实话,那只是两个模型之间的“小打小闹”。 今天我们要面对的,是一个真正的“四国联军”——YOLOv8检测、ResNet分类、OCR文字识别、语音合成,四个模型串联成一条生产线。 你可能会想:“不就是把四个模型串…...