技术标签: 蓝桥杯嵌入式比赛
1、先来看读数据的操作流程
这里面需要注意的有:
u8 x24c02_Read(u8 address)
{
u8 dat;
I2CStart();//注意开启I2C之后,不需要进行应答信号的等待,如果加上了应答信号的等待,可能会导致数据无法进行正常读取
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(address);
I2CWaitAck();
I2CStart();//注意此处必须再重新开启I2C
I2CSendByte(0xa1);
I2CWaitAck();
dat = I2CReceiveByte();
I2CWaitAck();
I2CStop();
I2CWaitAck();
return dat;
}
2、再来看数据写入的过程
这里面需要注意的有:
程序如下:
void x24c02_Write(u8 address,u8 dat)
{
I2CStart();//注意开启I2C之后,不需要进行应答信号的等待,如果加上了应答信号的等待,可能会导致数据无法进行正常读取
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(address);
I2CWaitAck();
I2CSendByte(dat);//写入数据地址之后,这里可以直接进行数据的读取
I2CWaitAck();
I2CStop();
}
谨记:
temp = x24c02_Read(0x00);
Delay_Ms(10);
x24c02_Write(0x00,++temp);
Delay_Ms(10);
3、写入32位整型数据:
void x24c02_Write_int(u8 address,int dat)
{
x24c02_Write(address,(u8)(dat & 0xff));
Delay_Ms(2);
x24c02_Write(address+1,(u8)(dat >> 8 & 0xff));
Delay_Ms(2);
x24c02_Write(address+2,(u8)(dat >> 16 & 0xff));
Delay_Ms(2);
x24c02_Write(address+3,(u8)(dat >> 24 & 0xff));
Delay_Ms(2);
}
4、读取32位整型数据:
int x24c02_Read_int(u8 address)
{
int dat;
dat = (int)x24c02_Read(address);
Delay_Ms(2);
dat += (int)x24c02_Read(address+1) << 8;
Delay_Ms(2);
dat += (int)x24c02_Read(address+2) << 16;
Delay_Ms(2);
dat += (int)x24c02_Read(address+3) << 24;
Delay_Ms(2);
return dat;
}
文章浏览阅读1.7k次。本文结合FPGA芯片的高并行、低功耗、可重配置等优势,对基于卷积神经网络结构的目标检测算法,在端侧场景下的加速与部署进行研究与实现。本章节对本文涉及到的基本理论知识与技术手段进行介绍,为后续系统的方案分析与系统设计奠定理论基础。首先,介绍了卷积神经网络的基本组成部分及其原理。然后,对FPGA及其开发技术进行简单介绍。最后,对当前常用的部分基于FPGA的卷积神经网络加速方法进行概述。_yolo fpga
文章浏览阅读1.2w次。堆栈溢出堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前,先了解以下几个概念:缓冲区 简单说来是一块连续的计算机内存区域,可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型。堆栈中的物体具有一个特性:最后一个放入堆栈中的物体总是被最先拿出来,这个特性通常称为后进先出 (LIFO)队列。堆栈中定义了一些操作。两个最重要的是PU..._buffer over flow l
文章浏览阅读455次。我们日常开发中,经常会碰到并发的场景,在 Java 中语言体系里,我们会想到 ReentrantLock、CountDownLatch、Semaphore 等工具,但你是否清楚它们内部的实现原理?这些工具都很类似,底层都是基于AbstractQueuedSynchronizer(AQS)来实现的。今天我们就来一起学习 AQS 内部原理。_aqs 入对之后就一定顺序执行
文章浏览阅读4.1k次。编写一个程序,在屏幕上显示如下图形(图形的层数有输入者自行定义)源代码如下所示:#include<stdio.h>int main(){ int line; // 菱形总行数 int column; // 菱形总列数 int i; // 当前行 int j; // 当前列 printf("请输入菱形的行数(奇数):"); scanf("%d", &line); while(2) { if(line%_c语言画菱形
文章浏览阅读760次,点赞10次,收藏28次。/ 封装axios请求的模块// 用axios重新生成了请求的实例baseURL: ‘’, // 项目发送axios请求的公共地址 值为空timeout: 5000 // 请求超时时间 这里是请求超过五秒后还没有获得请求结果 提示请求超时})// config包含了请求相关的所有信息// 可以同过config对象给请求配置或者修改信息return config // 将配置完成的token返回 如果不返回 请求不会继续进行// 请求发生错误时的回调函数。
文章浏览阅读108次。最近在用c#写VSTO文字操作插件,因为要同时在WPS中有效,因此进行了提取。_wps officeimageid
文章浏览阅读81次。苹果今日向 Mac 电脑用户推送了 macOS 14 开发者预览版 Beta 3 更新。但是并未发现 macOS 14 Sonoma 的第三个开发者测试版的新功能,且更新日志和 Beta 2 类似。_mac os sonoma最新版本
文章浏览阅读270次。一.类(1).基础最简单的定义方式class Person{}log(new Person());//Person{}log(typeof Person);function标准写法class Person{ constructor(name = "zhangsan",age = "18"){ //私有属性 this.name = name; this.age = age; } //公有属性 _es6 类修饰 详解
文章浏览阅读335次。3.1 可变字符串和BigDecimal3.1.1 可变字符串由于我们的字符串,是不可变的。每次都要在 字符串池里 新建和共享。这样效率很低,而且占用空间大。我们的 Java 就开发了 可变字符串下面的两者,都比传统的 String 类型要快很多。① StringBuffer:JDK1.0提供的,效率低,线程安全。它是实现开辟一个缓冲区,然后操作的时候,直接在 缓冲区里进行操作。② StringBuilder:JDK5.0提供的,效率高,线程不安全3.1.2 StringBuffer①_java字符串和bigdecimal类
文章浏览阅读2.6k次,点赞9次,收藏2次。32×32位寄存器堆设计,杭电计算机组成原理实验四,实验的开发工具是vivado2018,vivado2022也兼容2018_fpga2s需要多少位寄存器
文章浏览阅读644次。因为STM32F103C8T6,没有硬件随机数,所以需要自己通过软件配置。最后得到的mmm1变量为一个0~100的随机值。首先增加一段include用于产生真随机数。_stm32f103c8t6可以生成随机数么
文章浏览阅读4.5k次。先说下需求吧,我们的需求是通过一个经纬度,然后打开微信内置的地图页面代码如下://导航到停车场 gogogo() { //获取当前页面url //var url = location.href.split('#')[0]; // alert(11111) // window.location.href = // "https://apis.map.qq.com/uri/v1/marker?marker=coord:30.595810_h5 wx.openlocation