【蓝桥杯嵌入式——学习笔记一】2016年第七届省赛真题重难点解析记录,闭坑指南(文末附完整代码)

news2025/4/15 11:42:05

在读题过程中发现本次使用的是串口2,需要配置串口2。

 但在查看产品手册时发现PA14同时也是SWCLK。

所以在使用串口2时需要拔下跳线帽去连接CH340。

可能是用到串口2的缘故,在烧录时发现报了一个错误。这时我们要想烧录得按着复位键去点击烧录,点完后就松开复位键就可以烧录成功。

使用串口时记得打开串口中断,否则无法接收到字符。

LED部分运行代码:

 

void ledProc(void)
{
    if((uwTick - uwTick_led_set_point) < 200) return;
        uwTick_led_set_point = uwTick;
    
    
    if((uwTick - uwTick_led_time_point) >= 1000)
    {
        uwTick_led_time_point = uwTick;
        uc_led ^= 0x01;
    }
    
    if(change_state == 1)
    {
        if(resersal_count--)
        {
            uc_led ^= 0x02;
        }
        if(resersal_count == 0)
        {
            change_state = 0;
            resersal_count = 10;
            uc_led = 0;
        }
    }
    
    if(change_rx_state == 1)
    {
        if(resersal_rx_count--)
        {
            uc_led ^= 0x04;
        }
        if(resersal_rx_count == 0)
        {
            change_rx_state = 0;
            resersal_rx_count = 10;
            uc_led = 0;
        }
    }
    
    ledDisp(uc_led);
}

 LED2与LED3的状态变量,在等级发生改变和串口接收到字符时发生改变。

EEPROM部分代码:

    iic24c02Read(hold_eeprom_string, 0, 3);
    lecel_grade_hold_one = hold_eeprom_string[0];
    lecel_grade_hold_two = hold_eeprom_string[1];
    lecel_grade_hold_three = hold_eeprom_string[2];
            if(key_down == 1)
            {
                i2c24c02Write(&lecel_grade_hold_one, 0, 1);
                HAL_Delay(1);
                i2c24c02Write(&lecel_grade_hold_two, 1, 1);
                HAL_Delay(1);
                i2c24c02Write(&lecel_grade_hold_three, 2, 1);
                HAL_Delay(1);
                LCD_Clear(Black);
                interface = 0;
            }

LCD的高亮显示部分代码:

case 1:
            sprintf((char *)lcd_disp_string, "   ParameterSetup   ");
            LCD_DisplayStringLine(Line1, lcd_disp_string);
            
            sprintf((char *)lcd_disp_string, "   Threshold1:%dcm   ", lecel_grade_hold_one);
            if(select_bright_hold == 1)
                LCD_SetTextColor(Green);
            LCD_DisplayStringLine(Line3, lcd_disp_string);
            LCD_SetTextColor(White);
            
            sprintf((char *)lcd_disp_string, "   Threshold2:%dcm   ", lecel_grade_hold_two);
            if(select_bright_hold == 2)
                LCD_SetTextColor(Green);
            LCD_DisplayStringLine(Line4, lcd_disp_string);
            LCD_SetTextColor(White);
            
            sprintf((char *)lcd_disp_string, "   Threshold3:%dcm   ", lecel_grade_hold_three);
            if(select_bright_hold == 3)
                LCD_SetTextColor(Green);
            LCD_DisplayStringLine(Line5, lcd_disp_string);
            LCD_SetTextColor(White);
        break;

背景高亮与文字相同。

串口发送数据到PC部分代码:

 在下一次等级变化发生前,将现在的等级存入变量中,以便下次比较。

    lecel_grade_old = lecel_grade;
    
    if(h_int <= lecel_grade_hold_one)
        lecel_grade = 0;
    else if((h_int > lecel_grade_hold_one) && (h_int <= lecel_grade_hold_two))
        lecel_grade = 1;
    else if((h_int > lecel_grade_hold_two) && (h_int <= lecel_grade_hold_three))
        lecel_grade = 2;
    else
        lecel_grade = 3;
    if(lecel_grade > lecel_grade_old)
    {
        sprintf(str, "A:H%d+L%d+U\r\n", h_int, lecel_grade);
        HAL_UART_Transmit(&huart2,(unsigned char *)str, strlen(str), 50);
        change_state = 1;
    }
    else if(lecel_grade < lecel_grade_old)
    {
        sprintf(str, "A:H%d+L%d+D\r\n", h_int, lecel_grade);
        HAL_UART_Transmit(&huart2,(unsigned char *)str, strlen(str), 50);
        change_state = 1;
    }

完整代码:

嵌入式系统开发-STM32液位检测报警系统设计-蓝桥杯第七届省赛真题解析与参考代码资源-CSDN文库

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

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

相关文章

基础常问 (概念、代码)

读源码 代码题 Void方法 &#xff0c;也可以提前rerun;结束 RandomAccessFile类&#xff08;随机访问文件&#xff09; 在 Java 中&#xff0c;可以使用RandomAccessFile类来实现文件指针操作。RandomAccessFile提供了对文件内容的随机访问功能&#xff0c;它的文件指针可以通…

J1 ResNet-50算法实战与解析

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習紀錄博客&#x1f356; 原作者&#xff1a;K同学啊 | 接輔導、項目定制 一、理论知识储备 1. 残差网络的由来 ResNet主要解决了CNN在深度加深时的退化问题&#xff08;梯度消失与梯度爆炸&#xff09;。 虽然B…

[MySQL初阶]MySQL(8)索引机制:下

标题&#xff1a;[MySQL初阶]MySQL&#xff08;8&#xff09;索引机制&#xff1a;下 水墨不写bug 文章目录 四、从问题到底层&#xff0c;从现象到本质1.为什么插入的数据默认排好序2.MySQL的Page&#xff08;1&#xff09;为什么选择用Page&#xff1f;&#xff08;2&#x…

Muduo网络库实现 [九] - EventLoopThread模块

目录 设计思路 类的设计 模块的实现 私有接口 公有接口 设计思路 我们说过一个EventLoop要绑定一个线程&#xff0c;未来该EventLoop所管理的所有的连接的操作都需要在这个EventLoop绑定的线程中进行&#xff0c;所以我们该如何实现将EventLoop和线程绑定呢&#xff1f;…

《K230 从熟悉到...》识别机器码(AprilTag)

《K230 从熟悉到...》识别机器码&#xff08;aprirltag&#xff09; tag id 《庐山派 K230 从熟悉到...》 识别机器码&#xff08;AprilTag&#xff09; AprilTag是一种基于二维码的视觉标记系统&#xff0c;最早是由麻省理工学院&#xff08;MIT&#xff09;在2008年开发的。A…

栈和队列的概念

1.栈的概念 只允许在固定的一端进行插入和删除&#xff0c;进行数据的插入和数据的删除操作的一端数栈顶&#xff0c;另一端称为栈底。 栈中数据元素遵循后进先出LIFO (Last In First Out) 压栈&#xff1a;栈的插入。 出栈&#xff1a;栈的删除。出入数据在栈顶。 那么下面…

红日靶场一实操笔记

一&#xff0c;网络拓扑图 二&#xff0c;信息搜集 1.kali机地址&#xff1a;192.168.50.129 2.探测靶机 注&#xff1a;需要win7开启c盘里面的phpstudy的服务。 nmap -sV -Pn 192.168.50.128 或者扫 nmap -PO 192.168.50.0/24 可以看出来win7(ip为192.168.50.128)的靶机开…

【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解

【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解 文章目录 【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解前言YOLOV2的模型结构YOLOV2模型的基本执行流程YOLOV2模型的网络参数YOLOV2模型的训练方式 YOLOV2的核心思想前向传播阶段反向传播阶段 总结 前…

NineData云原生智能数据管理平台新功能发布|2025年3月版

本月发布 15 项更新&#xff0c;其中重点发布 3 项、功能优化 11 项、性能优化 1 项。 重点发布 基础服务 - MFA 多因子认证 新增 MFA 多因子认证&#xff0c;提升账号安全性。系统管理员开启后&#xff0c;所有组织成员需绑定认证器&#xff0c;登录时需输入动态验证码。 数…

GLSL(OpenGL 着色器语言)基础语法

GLSL&#xff08;OpenGL 着色器语言&#xff09;基础语法 GLSL&#xff08;OpenGL Shading Language&#xff09;是 OpenGL 计算着色器的语言&#xff0c;语法类似于 C 语言&#xff0c;但提供了针对 GPU 的特殊功能&#xff0c;如向量运算和矩阵运算。 着色器的开头总是要声明…

Redis基础知识-3

RedisTemplate对多种数据结构的操作 1. String类型 示例代码&#xff1a; // 保存数据 redisTemplate.opsForValue().set("user:1001", "John Doe"); // 设置键值对&#xff0c;无过期时间 redisTemplate.opsForValue().set("user:1002", &qu…

unity各个面板说明

游戏开发&#xff0c;unity各个面板说明 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ unity简介-unity基础…

游戏引擎学习第199天

回顾并发现我们可能破坏了某些东西 目前&#xff0c;我们的调试 UI 运行得相对顺利&#xff0c;可以创建可修改的调试变量&#xff0c;也可以插入分析器&#xff08;profiler&#xff09;等特殊视图组件&#xff0c;并进行一些交互操作。然而&#xff0c;在上一次结束时&#…

Linux红帽:RHCSA认证知识讲解(十)使用 tar创建归档和压缩文件

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;十&#xff09;使用 tar创建归档和压缩文件 前言一、归档与压缩的基本概念1.1 归档与压缩的区别 二、使用tar创建归档文件2.1 tar命令格式2.2 示例操作 三、使用tar进行压缩3.2 命令格式3.3 示例操作 前言 在红帽 Linux 系…

端到端机器学习流水线(MLflow跟踪实验)

目录 端到端机器学习流水线(MLflow跟踪实验)1. 引言2. 项目背景与意义2.1 端到端机器学习流水线的重要性2.2 MLflow的作用2.3 工业级数据处理需求3. 数据集生成与介绍3.1 数据集构成3.2 数据生成方法4. 机器学习流水线与MLflow跟踪4.1 端到端机器学习流水线4.2 MLflow跟踪实验…

相平面案例分析爱情故事

动态系统的分析可以分为三个步骤&#xff1a;第一步描述系统&#xff0c;通过语言来描述系统的特性&#xff0c;第一步描述系统&#xff0c;即通过语言来描述系统的特性&#xff1b;第二步数学分析&#xff0c;即使用数学工具对系统进行量化解析&#xff1b;第三步结果与讨论&a…

《2024年全球DDoS攻击态势分析》

从攻击态势来看&#xff0c;2024年DDoS攻击频次继续呈增长趋势&#xff0c;2024年同步增加1.3倍&#xff1b;超大规模攻击激增&#xff0c;超800Gbps同比增长3.1倍&#xff0c;累计高达771次&#xff0c;且互联网史上最大带宽和最大包速率攻击均被刷新&#xff1b;瞬时泛洪攻击…

RTC实时时钟M41T11M6F国产替代FRTC4111S

由NYFEA徕飞公司制造的FRTC4111S是一种低功耗的串行实时时钟(RTC)&#xff0c;国产直接替代ST的M41T11M6F,其具有56字节的NVRAM&#xff0c;32.768 kHz振荡器(由外部晶体控制)和RAM的前8字节用于时钟/日历功能并以二进制编码十进制(BCD)格式配置。地址和数据通过两行双向总线串…

Uni-app PDF Annotation plugin library online API examples

This article introduces the online version of the ElasticPDF API tutorial for the PDF annotation plug-in library in Uni-app projects. The API includes ① Export edited PDF data; ② Export annotations json data; ③ Reload old annotations; ④ Change files; ⑤…

SpringKafka消息发布:KafkaTemplate与事务支持

文章目录 引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优化总结 引言 在现代分布式系统架构中&#xff0c;Apache Kafka作为高吞吐量的消息系统&#xff0c;被广泛应用于事件驱动应用开发。Spring Kafka为Java开发者提供了与Kafka交互…