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

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

在读题过程中发现本次使用的是串口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.dtcms.com/a/108954.html

相关文章:

  • SSE与Streamable HTTP的区别:协议与技术实现的深度对比
  • PyQT5安装搭配QT Designer+Pycharm)
  • GISBox:核心功能免费的一站式三维GIS处理平台
  • Muduo网络库实现 [十] - EventLoopThreadPool模块
  • 机器学习建模+ SHAP模型预测解释
  • 基于Python+MySQL实现(Web)端的教务管理系统
  • Apache httpclient okhttp
  • Java 多态:理解面向对象编程的核心概念
  • 印度股票K线、实时行情与IPO新股数据对接指南
  • 【测试】每日三道面试题 4/3
  • Low Energy Controller——Air interface packets(3)
  • Tree - Shaking
  • nginx的二次开发版本openresty
  • 【vLLM 学习】调试技巧
  • JUC系列JMM学习之随笔
  • 基于vscode(GDB)调试ros2节点
  • 基于腾讯云EdgeOne Pages技术轻松搭建专属的对话型 AI 网站
  • 基于ResNet18的Cifer-10数据集图像分类
  • UE5学习笔记 FPS游戏制作42 按钮添加回调函数
  • SpringBoot项目Sa-token框架整合JWT
  • 每天学一个 Linux 命令(12):chown
  • flutter 项目结构目录以及pubspec.ymal等文件描述
  • /////////
  • [MySQL初阶]MySQL库的操作
  • 位置编码(Positional Encoding, PE)的作用
  • 开源AI模型落地教程:如何在个人电脑安装并运行QwQ-32B大模型
  • 【MyBatis】深入解析 MyBatis:关于注解和 XML 的 MyBatis 开发方案下字段名不一致的的查询映射解决方案
  • 【Linux】动静态库知识大梳理
  • Android Gradle、Android Gradle Plugin、BuildTool关系
  • 真实笔试题