第十二届蓝桥杯嵌入式总结及分享

2023-11-11

蓝桥杯嵌入式总结以及分享

这是我第一次写CSDN的文章,如果有什么写的不好的,还请各位见谅,不喜勿喷,谢谢。
经过这两个星期时间准备省赛,两个星期准备国赛,最终取得了国二的成绩,个人认为这个比赛就是耗时长,我对源码不够熟悉,所以导致时间基本都耗在了源码的调试上,蓝桥杯嵌入式比赛是提供源码的,但是不一定全,需要自己更改为自己需要的源码,也就是他提供的代码,不一定是你的开发板上的。好,那我们废话不多说了,步入正题。

蓝桥杯资源包

链接: 蓝桥杯资源包.
提取码:1112在这里插入图片描述
在这里插入图片描述省赛资源包就是没有以上框选的的代码提供。

客观题部分

客观题部分会有几道关于stm32的题目,可以查看该文档来查找
在这里插入图片描述
其他客观题问模电数电,这个可以找学校老师拿“客观题讲义”,也就是往届客观题的汇总。或者就是去CSDN找,都可以找到的。我大多数都是蒙的。哈哈哈~~~~~

代码部分

代码部分我是看的一位大佬发的文章,上连接链接: 蓝桥杯嵌入式备赛手册.
这位大佬写得很详细,如何移植蓝桥杯官方的代码。非常感谢这位大佬的分享

LED控制代码

在这里插入图片描述由于LED灯和LCD共用了io口,LED又是通过74HC573芯片控制的,大概就是锁存器的意思,所以他的控制代码必须这样写,他才不会出现LED混乱的情况。

void led_ctr(u8 led)
{
	GPIO_Write(GPIOC,~led<<8);
	GPIO_SetBits(GPIOD,GPIO_Pin_2);
	GPIO_ResetBits(GPIOD,GPIO_Pin_2);
}

其他的代码,按照那位大佬的写法基本上是没有问题的。
接下来我分享一下我调试代码遇到的问题

按键 PA0、8 、 PB1、2
串口 TX PA2、RX PA3
电位器 PB0
蜂鸣器 PB4
TIM2 PA1-CH2、PA2-3
TIM3 PA6-CH1、PA7-CH2

串口代码

void usart_SendString(u8 *str)
{
	u8 i=0;
	do{
		USART_SendData( USART2, str[i]);
		while(!USART_GetFlagStatus( USART2,  USART_FLAG_TXE));			
		i++;
	}while(str[i]!=0);
}
//记住这里的u8 i=0;要不然数据会发不出去
//定义数组str存储发送的数据,通过do-while一个个的传输
//USART_FLAG_TXE:发送数据寄存器空标志位

/****接收函数也是那位大佬分享的,如下****/
u8 recevie;	//接收标志位
u8 usart_str[20];	//数据缓存区
u8 buf;		//数据位
u8 temp;		//数据接收
void USART2_IRQHandler(void)
{
  if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  {
   USART_ClearITPendingBit(USART2, USART_IT_RXNE);//清除标志位
    /* Read one byte from the receive data register */
    temp = USART_ReceiveData(USART2);
		
    if(temp == 'A')
    {
	recevie=1;	//接收完成,失能
	buf=0;
      /* Disable the USARTy Receive interrupt */
      USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
    }
          else
	usart_str[buf++]=temp;
  }
}
/************数据接收*********/
	if(recevie==1)
	{
	recevie=0;
	LCD_ClearLine(Line2);
	sprintf((char*)str,"usart:%s",usart_str);
	LCD_DisplayStringLine(Line2,str);
	memset(usart_str,0,sizeof usart_str);	//在string.h头文件中,
	USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//使能接收
	}

上面的代码需要记住memset(usart_str,0,sizeof usart_str);也就是将数组清零,若不清零
在LCD上显示不同数组长度,你就会发现一些奇怪的事情。慢慢试一试吧o( ̄︶ ̄)o。

按键代码

按键长按短按基本上可以说是必考

void key_m(void)
{
	key=key_scan();
	if(key!=key_long)	//判断是长按还是短按
	{
		key_long=key;
		key_time=Time;
	}
	else
		key=0;
	if(key==1)		//短按执行代码
		led>>=1;
	if(key_long==1)			//长按执行代码
	{
		if(Time-key_time>800)
		{
			key_time=Time;
			led<<=1;
		}
	}
}

工程代码

链接:工程代码
提取码:1112
这里面的工程文件有按键和led灯等等的代码,我看过一些,发现里面的代码就像是往届赛题的代码。所以一定要仔细看一看,要学会做界面,长按短按这些,这些都是必考的。
在这里插入图片描述这里面代码很多,多看看总有好处的

温度传感器

国赛代码是没有DS18B20的读函数的

s16 ds18b20_read(void)
{
	s16 x;
	u8 i;
	u8 val[2];
	
	ow_reset();
	ow_byte_wr(OW_SKIP_ROM);
	ow_byte_wr(DS18B20_CONVERT);
	
	delay_us(7500);
	ow_reset();
	ow_byte_wr(OW_SKIP_ROM);
	ow_byte_wr(DS18B20_READ);
	
	for(i=0;i<2;i++)
	{
		val[i]=ow_byte_rd();
	}
	x=val[1];
	x=x<<8;
	x+=val[0];
	return x;
}

三轴传感器

三轴传感器的代码也是没有的,这个代码可以,但是我一直感觉他测出来的数据不对,这个在往届赛题中似乎都没有考过。所以你懂的吧。。。

void lis320_init(void)
{
	lis320_write(0x20,0x47);	//地址0x20,0x47上电使能xyz轴
}
0x38写0x39读
读取值
u8 lis320_data[3];
u8* lis320_read_data(void)
{
	if(lis320_read(0x27)&0x08)
	{
		lis320_data[0]=lis320_read(0x29);	//x地址
		lis320_data[1]=lis320_read(0x2B); 	//y地址
		lis320_data[2]=lis320_read(0x2D); 	//z地址
	}
	return lis320_data;
}

新板和旧板的区别

蓝桥杯嵌入式是出了一块新版的,所以他考的时候要注意两块板子的区别
在这里插入图片描述

在此预祝参加蓝桥的各位同学们,都能取得优秀成绩。加油

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十二届蓝桥杯嵌入式总结及分享 的相关文章

  • 数据库第五周实验——单表查询——例题实现

    文章目录 一 选择表中的若干列 1 查询指定列 2 查询全部列 3 查询经过计算的值 二 选择表中的若干元组 1 消除取值重复的行 DISTINCT 2 查询满足条件的元组 WHERE 1 比较大小 2 确定范围 3 确定集合 4 字符匹配
  • typescript第三天—接口和类

    接口 作一个简历的自动筛选程序 很简单 年龄小于 25 岁 胸围大于 90 公分的 可以进入面试环节 我们最开始的写法是这样的 新建一个文件 Demo8 ts 然后编写如下代码 const screenResume name string

随机推荐

  • 1.Docker学习之基础知识

    0x00 Docker 快速入门 1 基础介绍 2 Docker 架构 3 Docker 资源隔离 4 Docker 容器文件系统 0x01 Docker 安装 1 Linux 2 Windows 3 MAC 4 加速器配置 0x02 Do
  • win10 .yml .yaml 格式默认使用notepad++打开

    起因 发现win10 双击打开 yml yaml文件不能默认选择notepad 每次都得右击文件使用notepad 编辑 而且在设置 gt 应用 gt 默认应用 gt 按文件类型指定默认应用也没有 yml yaml 发现可以在notepad
  • 汇编语法

    1 通用寄存器 EAX EBX ECX EDX ESI EDI ESP EBP 它 们 的低 16 位就是 8086 的 AX BX CX DX SI DI SP BP 它们的含义如下 EAX 累加器 EBX 基址寄存器 Base ECX
  • 解决msvcp120d.dll和msvcr120d.dll缺失

    VS2015配置OpenCV2 4 xx之后 会出现如下问题 原因 微软的Visual Studio最终用户许可协议是禁止发布调试版 名字后面有D 的DLL的 msvcp120d dll和msvcr120d dll是VS2013版本中的调试
  • 文本检测(Text Detection)简要综述

    文章目录 检测 Detection 在计算机视觉中的位置 检测任务 经典数据集 评价指标 发展历史 什么叫Anchor 检测架构 RPN FPN 特征金字塔网络 几个文本检测的较新方法 FOTS 2018CVPR Fast Oriented
  • httpclient请求接口超时问题

    最近线上出现一个问题 外部请求过来后一直没有响应给调用方 看日志没有报错 可以复现 想到的就可能是五个原因 日志文件过大导致磁盘空间满了 导致正常的业务日志无法写入 但是重启后发现日志能正常写入 排除这个问题 系统对接很多外部数据源 可能哪
  • MySQL类型定义 - ENUM 和SET类型

    1 ENUM类型 ENUM类型又称为枚举类型 在创建表时 ENUM类型的取值范围以列表的形式指定 其基本形式如下 属性名 ENUM 值1 值2 值n 其中 属性名 参数指字段的名称 值n 参数表示列表中的第n个值 ENUM类型的值只能取列表
  • paddleLabe标注文件转labelImg

    代码 import os import xml etree ElementTree as ET 增加换行符 def indent elem level 0 i n level t if len elem if not elem text o
  • presto集群安装

    presto集群安装 整合hive 张映 发表于 2019 11 07 分类目录 hadoop spark scala 标签 hive presto Presto是一个运行在多台服务器上的分布式系统 完整安装包括一个coordinator
  • 微信小程序中使用ECharts--折线图、柱状图、饼图等

    微信小程序开发者的反馈 表示他们强烈需要像 ECharts 这样的可视化工具 但是微信小程序是不支持 DOM 操作的 Canvas 接口也和浏览器不尽相同 因此 ECharts 团队和微信小程序官方团队合作 提供了 ECharts 的微信小
  • EF codeFirst Database.SetInitializer的四种选项

    public MyDbContext base name Default 不会创建数据库 生产环境建议用这个设置 表通过sql来创建或修改 Database SetInitializer
  • Redis基础知识(一):学习笔记

    文章目录 一 nosql和redis 二 在Centos 7 中用Docker安装并运行Redis 一 安装并运行 二 其他操作 三 redis数据库常见操作 三 基本数据类型 一 String字符串 二 list列表 三 set集合 四
  • 【ACM出版 + EI检索稳定】第六届高性能编译、计算和通信国际会议(HP3C 2022)

    第六届高性能编译 计算和通信国际会议 HP3C 2022年6月23 25日 中国吉林 2022年第六届高性能编译 计算和通信国际会议 HP3C 2022 将于2022年6月23 25日在中国吉林举行 本次会议由东北电力大学主办 东北电力大学
  • 再谈 Java中Runnable和Thread的区别

    在面试中老有面试官问这个问题 个人觉得这个问题问的没有技术 一个死记硬背就能回答的很好 但是更深的回答是什么了 那就是直接回答源码吧 thread类实现了runnable 接口 Runnable就是一个借口 只能我们去实现了才能用 对吧 不
  • js 日期格式 转换 yyyy-MM-dd

    之前js获取到数据库的Date 总是显示成 后来知道是js 的Date 格式不能直接转换常用的yyyy MM dd 的格式 Date prototype yyyymmdd function var yyyy this getFullYear
  • H5的本地存储(localStorage)和会话(sessionStorage)还有cookie的使用与注意事项

    目录 本地存储使用的时候注意 js代码如下 cookie使用的时候注意 open in browser与open with live server的区别 最后是总代码如下 本地存储使用的时候注意 js代码如下 本地存储的使用 localSt
  • Linux系统下运行jar文件,提示:No main manifest attribute, in XXX.jar

    在Linux系统下执行java jar XXX jar com HelloWorld往往会提示 No main manifest attribute in XXX jar 原因如下 正常情况下 java打包成jar包需要在MANIFEST
  • 数据化看板(vue+Element+Echarts)

    效果图 由于一些原因无法上传整体的代码 只能放一些部分页面的代码 Element ui Echarts Echarts实例 分割线 首页代码
  • node_modules安装及node-sass使用

    node modules安装及node sass使用 终端进入项目文件夹运行以下命令 一 安装node modules 1 输入npm init 一直回车 会生成package json文件 2 npm i D vue 然后就成功node
  • 第十二届蓝桥杯嵌入式总结及分享

    蓝桥杯嵌入式总结以及分享 这是我第一次写CSDN的文章 如果有什么写的不好的 还请各位见谅 不喜勿喷 谢谢 经过这两个星期时间准备省赛 两个星期准备国赛 最终取得了国二的成绩 个人认为这个比赛就是耗时长 我对源码不够熟悉 所以导致时间基本都