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

蓝桥杯第15届真题解析

 

 

由硬件框图可以知道我们要配置LED 和按键、lcd,解决lcd引脚冲突

LED

先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题

 

按键

按键配置,由原理图按键所对引脚要GPIO_Input

生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题

按键控制led没有问题后写lcd显示代码,显示没问题后,解决lcd与led引脚冲突问题,方法在我的其他文章中

  HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_RESET ); //为解决引脚冲突初始化lcd时    LCD_Init ();                                                                                                  要将锁存器锁存器来;
  LCD_Clear (Black);
  LCD_SetBackColor(Black);
  LCD_SetTextColor(White);

LCD显示函数

void lcd_show(void)
{
    sprintf(text,"      hello world");
    LCD_DisplayStringLine (Line0 ,(uint8_t *)text);
}

脉冲捕获

PA15  PB4输入频率测量,使用pwm输入模式测量比较准确,题目要求频率10次/秒刷新,这里需要使用定时器,定时器可以用10ms,时间短的定时器便于使用。

配置pwm输入捕获

建立handlie.c handle.h文件

我分别选着TIM2 TIM3  combined channels

选择 PWM input on ch1

psc 80-1   记得去勾选中断

生成代码,添加.h文件,main中开启TIM

 HAL_TIM_IC_Start_IT(&htim2 ,TIM_CHANNEL_1)注意这里开启的是TIM_IC_Start

找到回调函数,写功能代码,这里回调函数也是要IC的

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
    
}

计算公式又来请查看我的另一篇文章,PWM的输入捕获

这次代capture哪里加了1主要个好处
避免0错误
或者修正精度
单片机除数为0会死机~
 

频率要求10次/秒刷新这就要用到定时器,PX要求可正可负,定义时就要有int类型

tim配置如下,参数来源请参考我蓝桥杯第16届的模拟一解析,要开启中断再生成代码

注意定时器的配置、开启代码与前面定时器配置输入捕获的不同,回调函数也不一样

用led来判断一下定时器是否好使

定时器没有问题,我们去定时10次/秒更新频率,更新时把题目要求的频率校准做了

页面切换

用标志位进行页面切换,三个页面以上我们用switch来切换

 data界面

data页面中有单位切换,这个用if来实现,小于/大于多少变成什么单位,注意还有要求,f为负数时显示NULL

其中还要实现模式转换,模式的转换我们也用标志位实现

这里是频率界面

按照题目要求,B3按键是用来切换频率界面与周期界面的,去key中的B3按键中写切换的代码

频率转周期

注意我们频率单位是hz,t=1/f,这里周期的单位是s,题目要求是um,要进行单位换算,也就是t要✖1000 000才得到um

易错点:定义float fAT,它是浮点型,fA是无符号整型,计算fAT时被除数1要写成1.0,否则出错;fAT=fAT/1000;1000不用写成1000.0,因为商fAT都是是float;上面代码中FB=fB/1000.0,1000要写成1000.0是因为FB是float型,fB是uint。

para参数界面

recd统计页面

页面残留问题

para recd界面显示的行数比data界面的都多,从para recd两个界面切换回data界面就会有残留显示,则还需要去相应界面中把对应的行数显示为空白

频率超限设置

我们设置的频率fA/B超过设置的PH值一次,对应NHA/B就加一次,这里的一次是高于后又低于算一次,高于后不低于继续高于不能再算一次

频率突变

这里要求三秒内,这就需要我们去配置定时器了

定时器配置

1.选用哪一个

2.根据定时时长设置psc、arr值,启用中断

3.生成代码,开启定时器

4.定时器回调函数写功能代码

定时器我们上面已经定义了一个10ms的,可以选择直接在里面写

if(fA>0)语句是防止一开始就加一,因为上电时fAfB是0的,然后再10ms内更新了数据,就会没有操作就加1了

功能按键

加减按键

参数界面参数选择

要求进如参数界面时,默认选择PD,所以要去切换界面的按键四中写一个条件语句确保完成要求

按键清零(长按键)

这里长安一秒就需要用到定时B3prees记录按下的时间,如果B3按下,B3press=1开始计时,当放开按键的时候去比较按下的时间,超过一秒就清零;

led指示灯

在前面写的void change ()函数用if语句写led的亮灭

 

相关文章:

蓝桥杯第15届真题解析

由硬件框图可以知道我们要配置LED 和按键、lcd,解决lcd引脚冲突 LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 按键 按键配置,由原理图按键所对引…...

19c rac-expdp备份异常处理

客户反馈,有套19c rac环境,补丁是19.13的,有1个节点使用expdp备份用户异常,报错如下 Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production ORA-31626: job does not exist ORA-31637: cannot…...

轻松部署 Stable Diffusion WebUI 并实现局域网共享访问:解决 Conda Python 版本不为 3.10.6 的难题

这篇博文主要为大家讲解关于sd webui的部署问题,大家有什么不懂的可以随时问我,如果没有及时回复,可联系:1198965922 如果后续大家需要了解怎么用代码调用部署好的webui的接口,可以在评论区留言哦,博主可以…...

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式 2025/3/4 16:47 缘起:128GB的TF卡,只能格式化为NTFS/exFAT/ext4。 在飞凌的OK3588-C下,NTFS格式只读。 exFAT需要改内核来支持。 现在只剩下ext4了。 linux R4默认不支持exFAT…...

AIP-159 跨集合读

编号159原文链接AIP-159: Reading across collections状态批准创建日期2019-07-26更新日期2019-07-26 有时,用户需要跨集合检索资源,或者在不知道资源所在集合的情况下检索单个资源。 指南 API 可以 在标准 List 方法中允许用户使用 - (连…...

C++进阶(七)--STL--bitset(位图)的介绍与基本功能模拟实现

文章目录 引入1.位图的介绍1.1位图的概念1.2位图的应用1.3bitset的基本使用bitset的定义方式bitset成员函数的使用 2.位图的基本模拟实现2.1基本结构2.2构造函数2.3set函数2.4reset2.5test 3.位图考察题目3.1只出现⼀次的整数?3.2找到两个文件交集?3.3出…...

清北deepseek8本手册

“清北手册”通常是“清华大学和北京大学推出的DeepSeek手册”的简写。近期,随着AI技术的迅速发展,清北两高校陆续发布多本自家的DeepSeek学习手册,助力普通人学习进阶。 清华大学的DeepSeek手册已推出5册,内容丰富全面&#xff0…...

如何将Promise.then中的值直接return出来

Promise 如何返回值,而不是返回 Promise 对象。实际开发中使用封装好的异步请求函数,为什么调用该函数返回的值一直都是 undefined。 一、需求 定义一个 foo 函数,在里面执行异步操作,然后取得 Promise.then 中的值并 return 出来…...

利用golang embed特性嵌入前端资源问题解决

embed嵌入前端资源,配置前端路由的代码如下 func StartHttpService(port string, assetsFs embed.FS) error {//r : gin.Default()gin.SetMode(gin.ReleaseMode)r : gin.New()r.Use(CORSMiddleware())// 静态文件服务dist, err : fs.Sub(assetsFs, "assets/di…...

SPI驱动(二) -- SPI驱动程序模型

文章目录 参考资料:一、SPI驱动重要数据结构1.1 SPI控制器数据结构1.2 SPI设备数据结构1.3 SPI驱动数据结构 二、SPI 驱动框架2.1 SPI控制器驱动程序2.2 SPI设备驱动程序 三、总结 参考资料: 内核头文件:include\linux\spi\spi.h 一、SPI驱…...

【无标题】FrmImport

文章目录 前言一、问题描述二、解决方案三、软件开发(源码)四、项目展示五、资源链接 前言 我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的…...

深入浅出 Go 语言:协程(Goroutine)详解

深入浅出 Go 语言:协程(Goroutine)详解 引言 Go 语言的协程(goroutine)是其并发模型的核心特性之一。协程允许你轻松地编写并发代码,而不需要复杂的线程管理和锁机制。通过协程,你可以同时执行多个任务,并…...

vLLM代码推理Qwen2-VL多模态

由于近期代码微调以及测试都是在远程服务器上,因此LLamafactory-cli webui 以及vLLM的ui均无法使用,因此不断寻求解决方案,我提供一个解决方案,LLamafactory微调完成的模型需要合并为一个完整模型后再使用vLLM进行代码推理测试微调…...

DNS云解析有什么独特之处?

在数字化浪潮中,每一次网页点击、视频加载或在线交易背后,都依赖着域名系统(DNS)的高效运转。传统DNS架构的局限性(如单点故障、延迟高、安全脆弱)在云计算时代被彻底颠覆,DNS云解析作为新一代解…...

视频流畅播放相关因素

视频播放的流畅度是一个综合性问题,涉及从视频文件本身到硬件性能、网络环境、软件优化等多个环节。以下是影响流畅度的关键因素及优化建议: 一、视频文件本身 1. 分辨率与帧率 1.问题:高分辨率(如4K)或高帧率&#…...

Python实现一个类似MybatisPlus的简易SQL注解

文章目录 前言实现思路定义一个类然后开始手撸这个微型框架根据字符串获取到所定义的DTO类构建返回结果装饰器解析字符串,获得变量SQL字符串拼接 使用装饰器 前言 在实际开发中,根据业务拼接SQL所需要考虑的内容太多了。于是,有没有一种办法…...

linux一些使用技巧

linux一些使用技巧 文件名称和路径的提取切换用户执行当前脚本一行演示单引号与双引号的使用curl命令仅输出响应头信息,不输出body体文件名称和路径的提取 文件路径为 /tmp/tkgup/test.sh 方式获取文件名获取文件路径获取文件全路径方式一basename ${file}dirname ${file}real…...

小模型和小数据可以实现AGI吗

小模型和小数据很难实现真正的 通用人工智能(AGI, Artificial General Intelligence),但在特定任务或受限环境下,可以通过高效的算法和优化方法实现“近似 AGI” 的能力。 1. 为什么小模型小数据难以实现 AGI? AGI 需…...

io学习----->文件io

思维导图: 一.文件io的概念 文件IO:指程序和文件系统之间的数据交互 特点: 1.不存在缓冲区,访问速度慢 2.不可以移植,依赖于操作系统 3.可以访问不同的文件类型(软连接,块设备等) 4.文件IO属于系统调…...

kubernetes介绍

文章目录 kubernetes概述kubernetes组件kubernetes概念 kubernetes概述 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是Google开源的的容器编排工具。 ​ kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...