第十五届蓝桥杯嵌入式省赛真题(满分)
第十五届蓝桥杯嵌入式省赛真题
目录
第十五届蓝桥杯嵌入式省赛真题
一、题目
二、分析
1、配置
2、变量定义
3、LCD显示模块
4、按键模块
5、数据分析和处理模块
1、频率突变
2、频率超限
3、数据处理
三、评价结果
一、题目





二、分析
1、配置
首先是配置cubemx的定时器进行PA15和PB4的输入捕获,如图所示:
此图为PA15的配置,我配置为PA15为定时器2的通道1

此图为PB4的配置,我配置为PB4为定时器3的通道1

2、变量定义
uint8_t ucLcd[21]; /* LCD值(\0结束) */
uint8_t Page;
uint8_t Qinchu_flag;
int32_t Fre_A,Fre_B,Per_A,Per_B,Qinchu_Tick;
uint8_t FP_select,P_select;//0表示频率,1表示周期
int32_t PD=1000,PH=5000,NDA,NDB,NHA,NHB;
int32_t PX=0;
uint16_t usCapt_TIM2[2],usCapt_TIM3[2]; /* TIM输入捕捉值 */
3、LCD显示模块
void LCD_Proc(void)
{static uint32_t LCD_Tick; //
if((uwTick - LCD_Tick) > 200 ){LCD_Tick = uwTick;//__disable_irq();switch (Page){case 0://数据界面sprintf((char*)ucLcd," DATA");LCD_DisplayStringLine(Line1,ucLcd);if(!FP_select)//频率{if(Fre_A>0){if(Fre_A>1000){sprintf((char*)ucLcd," A=%.2fKHz ",((float)Fre_A)/1000);LCD_DisplayStringLine(Line3,ucLcd);}else{sprintf((char*)ucLcd," A=%uHz ",Fre_A);LCD_DisplayStringLine(Line3,ucLcd);} }else{sprintf((char*)ucLcd," A=NULL ");LCD_DisplayStringLine(Line3,ucLcd);}if(Fre_B>0){if(Fre_B>1000){sprintf((char*)ucLcd," B=%.2fKHz ",((float)Fre_B)/1000);LCD_DisplayStringLine(Line4,ucLcd);}else{sprintf((char*)ucLcd," B=%uHz ",Fre_B);LCD_DisplayStringLine(Line4,ucLcd);} }else{sprintf((char*)ucLcd," B=NULL ");LCD_DisplayStringLine(Line4,ucLcd);}}else//周期{if(Per_A>0){if(Per_A>1000){sprintf((char*)ucLcd," A=%.2fmS ",((float)Per_A)/1000);LCD_DisplayStringLine(Line3,ucLcd);}else{sprintf((char*)ucLcd," A=%uuS ",Per_A);LCD_DisplayStringLine(Line3,ucLcd); } } else{sprintf((char*)ucLcd," A=NULL ");LCD_DisplayStringLine(Line3,ucLcd);}if(Per_B>0){if(Per_B>1000){sprintf((char*)ucLcd," B=%.2fmS ",((float)Per_B)/1000);LCD_DisplayStringLine(Line4,ucLcd);}else{sprintf((char*)ucLcd," B=%uuS ",Per_B);LCD_DisplayStringLine(Line4,ucLcd); } }else{sprintf((char*)ucLcd," B=NULL ");LCD_DisplayStringLine(Line4,ucLcd);}}break;case 1://参数界面sprintf((char*)ucLcd," PARA");LCD_DisplayStringLine(Line1,ucLcd);sprintf((char*)ucLcd," PD=%uHz ",PD);LCD_DisplayStringLine(Line3,ucLcd);sprintf((char*)ucLcd," PH=%uHz ",PH);LCD_DisplayStringLine(Line4,ucLcd);sprintf((char*)ucLcd," PX=%dHz ",PX);LCD_DisplayStringLine(Line5,ucLcd);break;case 2://统计界面sprintf((char*)ucLcd," RECD");LCD_DisplayStringLine(Line1,ucLcd);sprintf((char*)ucLcd," NDA=%u ",NDA);LCD_DisplayStringLine(Line3,ucLcd);sprintf((char*)ucLcd," NDB=%u ",NDB);LCD_DisplayStringLine(Line4,ucLcd);sprintf((char*)ucLcd," NHA=%u ",NHA);LCD_DisplayStringLine(Line5,ucLcd);sprintf((char*)ucLcd," NHB=%u ",NHB);LCD_DisplayStringLine(Line6,ucLcd);break;default:break;}//__enable_irq();}
}
4、按键模块
/* 按键扫描 */
void KEY_Proc(void)
{static uint32_t Key_Tick; //Key_Tick
if((uwTick - Key_Tick) > 2 ){Key_Tick = uwTick;KeyHandle(KEY_Read());}
}
/* 按键响应 */
void KeyHandle(uint8_t key)
{switch (Page){case 0://数据界面switch (key) {case 0:break;case 1://LD1 = !LD1;break;case 2://LD2 = !LD2;break;case 3:FP_select=!FP_select;break;case 4:Page++;P_select=0;LCD_Clear(Black);break;default:break;}break;case 1://参数界面switch (key) {case 0:break;case 1:switch (P_select){case 0://PDif(PD<1000) PD+=100;else PD=100;break;case 1://PH(PH>9900)?PH=1000:(PH+=100);break;case 2://PX(PX>900)?PX=-1000:(PX+=100);break;default:break;}break;case 2:switch (P_select){case 0://PDPD<=100?PD=1000:(PD-=100);break;case 1://PHPH<=1000?PH=10000:(PH-=100);break;case 2://PXPX-=100;if(PX<-1000){PX=1000;}break;default:break;}break;case 3:if(++P_select==3){P_select=0;}break;case 4:Page++;LCD_Clear(Black);break;default:break;}break;case 2://计录界面switch (key) {case 0:break;case 1:break;case 2:break;case 3:if(!Qinchu_flag){Qinchu_flag=1;Qinchu_Tick=uwTick;}break;case 4:Page=0;FP_select=0;LCD_Clear(Black);break;default:break;}if(Qinchu_flag&&HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2)){Qinchu_flag=0;if(uwTick-Qinchu_Tick>1000)//按键超过1秒后松开按键,清零该界面下的所有记录值{NDA=0;NDB=0;NHA=0;NHB=0;;}}break;default:break;}}
5、数据分析和处理模块
1、频率突变

因为频率是每1秒更新10个值,所以我就将30个值放在一个数组里面,对应3秒,再进行找大小
void tubian_proc(void) //突变次数计数
{// 当数组填满30个值时,进行以下处理if (array_ptr == 30){max1_num=findMax(frqA_array,array_ptr);min1_num=findMin(frqA_array,array_ptr);max2_num=findMax(frqB_array,array_ptr);min2_num=findMin(frqB_array,array_ptr);if ((max1_num - min1_num) > PD) NDA++; if ((max2_num - min2_num) > PD) NDB++; for (uint8_t i=0; i < 30; i++){frqA_array[i] = 0;frqB_array[i] = 0;}array_ptr = 0;}
}
2、频率超限

我们这里需要注意是当波形处于递增的时候NHA或NHA等于FH才加1,波形递减的时候,不实现,而不是简单的相交,这是一个易错点
int PHA[2],PHB[2];
void PH_beyond(void) //频率超限计数
{PHA[1]=Fre_A;PHB[1]=Fre_B;if(PHA[1]>PH&&PHA[0]<PH) NHA++;if(PHB[1]>PH&&PHB[0]<PH) NHB++;PHA[0]=PHA[1];PHB[0]=PHB[1];
}
3、数据处理
void Data_Proc(void)
{PH_beyond();static uint32_t Data_Tick,Data_tick; ////Get_NHA();if((uwTick - Data_Tick) > 100)//10次一秒0.1秒1次{Data_Tick = uwTick;
TIM2_GetCapture(usCapt_TIM2);Fre_A=1000000/usCapt_TIM2[0]+PX;Per_A=1000000/Fre_A;frqA_array[array_ptr] = Fre_A;TIM3_GetCapture(usCapt_TIM3);Fre_B=1000000/usCapt_TIM3[0]+PX;Per_B=1000000/Fre_B;frqB_array[array_ptr] = Fre_B;array_ptr++;}}
三、评价结果
最终我们通过4ti官网测评,可以测评出为满分

如果有朋友想需要全部工程代码,可以私信我哦~
相关文章:
第十五届蓝桥杯嵌入式省赛真题(满分)
第十五届蓝桥杯嵌入式省赛真题 目录 第十五届蓝桥杯嵌入式省赛真题 一、题目 二、分析 1、配置 2、变量定义 3、LCD显示模块 4、按键模块 5、数据分析和处理模块 1、频率突变 2、频率超限 3、数据处理 三、评价结果 一、题目 二、分析 1、配置 首先是配置cubemx…...
ASP.NET Core Web应用(.NET9.0)读取数据库表记录并显示到页面
1.创建ASP.NET Core Web应用 选择.NET9.0框架 安装SqlClient依赖包 2.实现数据库记录读取: 引用数据库操作类命名空间 创建查询记录结构类 查询数据并返回数据集合 3.前端遍历数据并动态生成表格显示 生成结果:...
【Sceneform-EQR】实现3D场景背景颜色的定制化(背景融合的方式、Filament材质定制)
写在前面的话 Sceneform-EQR是基于(filament)扩展的一个用于安卓端的渲染引擎。故本文内容对Sceneform-EQR与Filament都适用。 需求场景 在使用Filament加载三维场景的过程中,一个3D场景对应加载一个背景纹理。而这样的话,即便…...
LeetCode1706
LeetCode1706 目录 LeetCode1706题目描述示例题目理解问题描述 示例分析思路分析问题核心 代码段代码逐行讲解1. 获取网格的列数2. 初始化结果数组3. 遍历每个球4. 逐行模拟下落过程5. 检查是否卡住6. 记录结果7. 返回结果数组 复杂度分析时间复杂度空间复杂度 总结的知识点1. …...
2517. 礼盒的最大甜蜜度(Maximum Tastiness of Candy Box)
2517. 礼盒的最大甜蜜度(Maximum Tastiness of Candy Box) 问题描述 给定一个正整数数组 price,其中 price[i] 表示第 i 类糖果的价格,另给定一个正整数 k。商店将 k 类不同糖果组合成礼盒出售。礼盒的甜蜜度是礼盒中任意两种糖…...
Golang 的字符编码与 regexp
前言 最近在使用 Golang 的 regexp 对网络流量做正则匹配时,发现有些情况无法正确进行匹配,找到资料发现 regexp 内部以 UTF-8 编码的方式来处理正则表达式,而网络流量是字节序列,由其中的非 UTF-8 字符造成的问题。 我们这里从 G…...
利用ollama 与deepseek r1大模型搭建本地知识库
1.安装运行ollama ollama下载 https://ollama.com/download/windows 验证ollama是否安装成功 ollama --version 访问ollama本地地址: http://localhost:11434/ 出现如下界面 ollama运行模型 ollama run llama3.2 ollama常用操作命令 启动 Ollama 服务…...
Java短信验证功能简单使用
注册登录阿里云官网:https://www.aliyun.com/ 搜索短信服务 自己一步步申请就可以了 开发文档: https://next.api.aliyun.com/api-tools/sdk/Dysmsapi?version2017-05-25&languagejava-tea&tabprimer-doc 1.引入依赖 <dependency>…...
CAS单点登录(第7版)21.可接受的使用政策
如有疑问,请看视频:CAS单点登录(第7版) 可接受的使用政策 概述 可接受的使用政策 CAS 也称为使用条款或 EULA,它允许用户在继续应用程序之前接受使用策略。此功能的生产级部署需要修改流,以便通过外部存…...
53倍性能提升!TiDB 全局索引如何优化分区表查询?
作者: Defined2014 原文来源: https://tidb.net/blog/7077577f 什么是 TiDB 全局索引 在 TiDB 中,全局索引是一种定义在分区表上的索引类型,它允许索引分区与表分区之间建立一对多的映射关系,即一个索引分区可以对…...
Pythong 解决Pycharm 运行太慢
Pythong 解决Pycharm 运行太慢 官方给Pycharm自身占用的最大内存设低估了限制,我的Pycharm刚开始默认是256mb。 首先找到自己的Pycharm安装目录 根据合适自己的改 保存,重启Pycharm...
库里存储的数据有大量回车时,该如何进行存取
如图,打印模板存了很多坐标性的字段数据: 大量带换行的文本数据存到库里之后取出,前端需要做非空、合法校验, 然后在循环中,使用eval 函数接收每一句字符串,去执行这句 JavaScript 代码。 let arrStr tem…...
【devops】Github Actions Secrets | 如何在Github中设置CI的Secret供CI的yaml使用
一、Github Actions 1、ci.yml name: CIon: [ push ]jobs:build:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkoutv3- name: Set up Gouses: actions/setup-gov4with:go-version: 1.23.0- name: Cache Go modulesuses: actions/cachev3with:path: |…...
体验 DeepSeek-R1:解密 1.5B、7B、8B 版本的强大性能与应用
文章目录 🍋引言🍋DeepSeek 模型简介🍋版本更新:1.5B、7B、8B 的区别与特点🍋模型评估🍋体验 DeepSeek 的过程🍋总结 🍋引言 随着大规模语言模型的持续发展,许多模型在性…...
一文说清楚什么是Token以及项目中使用Token延伸的问题
首先可以参考我的往期文章,我这里说清楚了Cookie,Seesion,Token以及JWT是什么 其实Token你就可以理解成这是一个认证令牌就好了 详细分清Session,Cookie和Token之间的区别,以及JWT是什么东西_还分不清 cookie、sessi…...
大模型-Tool call、检索增强
大模型 Tool call 心知天气:https://www.seniverse.com/ 例子:调用天气接口 API from openai import OpenAI import requests import json """ ##### 天气接口 API 密钥获取:https://www.free-api.com/doc/558 ##### &quo…...
【算法】【区间和】acwing算法基础 802. 区间和 【有点复杂,但思路简单】
题目 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m 次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] …...
Ubuntu22.04通过Docker部署Jeecgboot
程序发布环境包括docker、mysql、redis、maven、nodejs、npm等。 一、安装docker 1、用如下命令卸载旧Docker: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 2、安装APT环境依赖包…...
HTML4
HTML 初体验 1.鼠标右键 > 新建 > 文本文档 > 输入以下内容,并保存 2.修改后缀为 .html ,然后双击打开即可 这里的后缀名,使用 .htm 也可以,但推荐使用更标准的 .html <marquee>尚硅谷,让天下没有难…...
STM32F10X 启动文件完整分析
最近在准备面试相关 顺便复盘总结一下之前的内容 启动文件在基于ARM的芯片是很重要的组成部分,它主要负责完成芯片上电启动时的一系列初始化工作和各种异常及中断的入口地址。 也是理解bootloader自举的关键点,所以需要理解一下 1. 向量表定义 启动文件…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
