暑期学习杂记

7月6日

粗略复习51(问了学长后,我打算直接看小车视频,遇到不会的再回去看江科大)
51单片机 LED灯共阳 数码管共阴

7月7日

定时器时间计算
[参考(1条消息) 51单片机定时器使用与计算-----day3_单片机定时器定时时间计算_电子笔记的博客-CSDN博客](https://blog.csdn.net/weixin_45518253/article/details/109684096?ops_request_misc=&request_id=8789d3f1560144c1986351b6fe4ae5fb&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2allkoosearch~default-2-109684096-null-null.142%5Ev88%5Einsert_down28v1,239%5Ev2%5Einsert_chatgpt&utm_term=51%E8%B6%85%E5%A3%B0%E6%B3%A2%E6%B5%8B%E8%B7%9D&spm=1018.2226.3001.4187)

使用_nop_()需包含intrins.h

超声波复习
距离计算单位问题
参考(1条消息) 51超声波测距简易代码_未寻得的旧梦的博客-CSDN博客
** 最终单位为cm/s**

7月8日

参考视频,购买小车零件(等待收货)
先看一遍小车视频

蓝牙模块 sfr AUXR=0x8e 用定时器2(改成超声波用定时器2,蓝牙用定时器1)程序在最后一个视频
暂时将避障模块放在超声波那里

复习串口通信模块
正反接入

7.9在家休息
7.10在家休息

7月11日

开始装小车

  • 问题:操作按照基本正确,但无法烧录(经过林师兄的调试,无结果)

  • 问题:小车上电后,动一下就没电
    解决:刚开始以为某个地方烧了,但研究后发现是电源接线出接触不良。要拧一下。

  • L298N:使能引脚盖帽拔掉,用最外面的引脚即可

  • 问题:其他都没有问题(接线,代码等)但是车轮不动
    解决:稳压模块买错了,要5v的

买稳压模块等快递中

7月12日

  • markdown复习

  • 51定时器复习(发现我之前写的程序有点问题)加深我对定时器的理解

  • 51串口复习
    在这里插入图片描述
    在这里插入图片描述


串口是两台设备相互通信的基础。
对于寄存器来说,
我之前对于RI,TI,这两位理解不是很好。

程序都是相对于单片机而言的。要搞清楚主机和从机。

TI,即发送中断请求标志位,当串行发送第8位结束时,由其内部硬件自行置位,即TI=1;所以必须由软件进行复位(TI=0)。

RI,即接收中断请求标志位,当串行接收第8位结束时,自动置位RI=1,同样的必须要求软件复位,即(RI=0)。

所以单片机发送和接收都会触发中断,但发送是主动的,可以不需要中断。而接收是被动的,需要像定一个闹钟一样,这样,单片机接收后做一些操作,我们才能知道单片机已经接收了。

波特率计算
八位自动重装
TL1 = 0xFA; 250 256
TH1 = 0xFA;
每个6us溢出
转化为频率 1/6=0.1666666666666667Mhz
十六分频 0.1666666666666667Mhz/16=0.0104166666666667=10416.66667hz
原9600hz(多少还是有点误差,发送字节时记得加延时函数来防止传输错误)

复习i2c,onewire通信协议

7月13日

(5V稳压快递还没到,先学32)

  • 命名规则
    在这里插入图片描述

  • keil5安装
    在这里插入图片描述
    选择相同的路径即可,这样51和MDK就兼容了

安装插件
安装驱动

(下单买了江科大的STM32)

  • 稳压快递到了
    小车直行,循迹基本实现(多注意接线和线的固定,防止线松了)

舵机暂时还没动,不清楚啥原因(定时器配置错乱)

避障(红外+超声波+舵机)
蓝牙(没找到SPP那个软件,没进行测试)
在这里插入图片描述
蓝牙模块主要时用串口(默认定时器1),与之前的模块有冲突,然后用手机发送指令,串口中断执行指令。

  • 小车各个模块基本搞定
    在这里插入图片描述

7月14日

结构体学习

  • 结构声明
struct student{  //类型char name[21];  //姓名int num;			//学号float score;		//成绩};   //(注意末尾有一个分号)
  • 结构体变量
  1. struct student stu1;//定义结构体变量(类型+变量)
  2.  	char name[21];int num;float score;}stu1;
  • 结构体访问
    stu1.name
    采用结构体变量名称.成员名称

  • 结构体变量初始化

  1. 逐个赋值
    struct student stu1;
    strcpy(stu1.name,"李");
    stu1.num=18;
    stu1.score=100;
    

`` 注意不能直接给数组名赋值,因为数组名是个常量

  1. 整体赋值
struct student stu1={"李",18,100};
  • 使用
void main ( void )
{struct student stu1;scanf("%s%d%d",stu1.name,&stu1.num,&stu1.score);  //注意数组名称就可以表示地址printf("姓名: %s\n",stu1.name);printf("年龄: %d\n",stu1.num);printf("分数:%d\n",stu1.score);return 0;
}

结构体变量存储原理

-1)结构体数据成员对齐的意义

内存是以字节为单位编号的,某些硬件平台对特定类型的数据的内存要求从特定的地址开始,如果数据的存放不符合其平台的要求,就会影响到访问效率。所以在内存中各类型的数据按照一定的规则在内存中存放,就是对齐问题。而结构体所占用的内存空间就是每个成员对齐后存放时所占用的字节数之和。
计算机系统对基本数据类型的数据在内存中存放的限制是:这些数据的起始地址的值要求是某个数K的倍数,这就是内存对齐,而这个数 K 就是该数据类型的对齐模数(alignment modulus)。这样做的目的是为了简化处理器与内存之间传输系统的设计,并且能提升读取数据的速度。
结构体对齐不仅包括其各成员的内存对齐(即相对结构体的起始位置),还包括结构体的总长度。

2)结构体大小的计算方法和步骤
i. 将结构体内所有数据成员的长度值相加,记为 sum_a ;
ii. 将各数据成员为了内存对齐,按各自对齐模数而填充的字节数累加到sum_a上,记为sum_b。
对齐模数是 #pragma pack 指定的数值与该数据成员自身长度相比较得到的数值较小者。该数据相对起始位置应该是对齐模数的整数倍。
iii. 将和 sum_b 向结构体模数对齐。
该模数则是 #pragma pack 指定的数值与结构体内最大的基本数据类型成员长度相比较得到的数值较小者。结构体的长度应该是该模数的整数倍。

参考
https://blog.csdn.net/yanggangclcsdn/article/details/49718131

结构体数组

定义

struct student {char name[21];int num;float score;
}stu[5];    //定义一结构数组stu,共有5个元素

赋值

stu[0]=(struct student){"tom",18,100.0};
输出结构体

//结构体数组长度
int length = sizeof (stu)/sizeof (struct student)
//逐个输出结构数组元素
for(int i=0;i<length;i++)
{printf("姓名:%s 学号:  %d   成绩: %f\n",stu[i].name,stu[i].num,stu[i].score);
}

结构体与指针

struct student *pstu;

数组名表示数组的首地址,可以直接给地址给指针。而结构变量名称不表示首地址,所以要用&给地址。
即 pstu=&stu1;

访问
(*pstu).name
pstu->name

结构体嵌套

struct birthday{int year;int month;int day;
};
struct student{char name[21];int num;float score;struct birthday birth;  //生日
};

结构与函数

结构体的成员作为函数参数

struct student {char name[20];int num;float score;
};
void printnum (int num)
{
printf("num = %d \n",num);
}struct student student0={"tom,10,100"};printnum(student0.num);

结构变量名与可以作为函数参数传递

void printstu(struct student stu)
{stu.num=100;  //修改学号printf("%s%d%p",student.name,student.num,&stu);struct student stu0={"tom",18,100};printstu(stu0);printf("%s%d%p",stu0.name.stu0.num,&stu0)
}
  • 枚举
    定义同类型的多个变量(本质上是int型)
enum DAY  //类型名称就是 enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};

用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明
typedef enum workday;

枚举括号内逗号,而结构体括号内是分号;
宏定义#define与类型定义typedef的区别

  1. 宏定义范围更广(typedef只能给数据类型定义新名字)
  2. 宏定义新名字在前面;而typedef新名字在后面
  3. 宏定义最后不用加分号;而typedef需要
  • #define u8 unsigned char
  • typedef unsigned char u8

参考
https://blog.csdn.net/qq_28576837/article/details/125091771?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168934073316800188583477%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168934073316800188583477&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-125091771-null-null.142v88insert_down28v1,239v2insert_chatgpt&utm_term=%E6%9E%9A%E4%B8%BE&spm=1018.2226.3001.4187

stm32快递到了,开始学

GPIO(general purpose input output)一般通用输入输出端口
推挽输出
开漏模式
高阻态
参考
https://blog.csdn.net/qq_37703067/article/details/129644535?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168933997116800185874940%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168933997116800185874940&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-129644535-null-null.142v88insert_down28v1,239v2insert_chatgpt&utm_term=%E6%8E%A8%E6%8C%BD%E8%BE%93%E5%87%BA&spm=1018.2226.3001.4187

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Raki的读paper小记:Retentive Network: A Successor to Transformer for Large Language Models

Abstract&Introduction&Related Work 研究任务 语言模型的基础架构已有方法和相关工作 S4&#xff0c;H3&#xff0c;Hyena&#xff0c;Linear Transformer用核函数近似注意力&#xff0c;以便将自回归推理重写为循环形式回归到使用循环模型进行高效推理&#xff0c;但…

Coremail RSAC大会观察:在邮件安全领域AI既是矛也是盾

《Coremail RSAC大会观察&#xff1a;在邮件安全领域AI既是矛也是盾》 全球网络安全界的盛会——2023年RSAC大会于当地时间4月24日-27日在美国旧金山召开&#xff0c;大会以“Stronger Together&#xff08;一起变得更强大&#xff09;”为主题&#xff0c;议程主要包含安全研…

小红书软件,自动文案神器,爆文效率UP

小红书软件&#xff0c;自动文案神器&#xff0c;爆文效率UP&#xff01;#小红书推广#小红书营销#百收小红书 Hello大家好&#xff0c;我是百收&#xff0c;今天给大家分享的是小红书&#xff0c;三步快速打造爆款笔记可批量可复制。那话不多说先给大家看一下呃&#xff0c;学…

5个AI人工智能平台推荐,绘画、写作文案、文章一键生成

随着人工智能技术的快速发展&#xff0c;AI原创文章写作平台也愈加成熟和完善&#xff0c;让文章的创作变得更加便捷、高效、优质。下面介绍五个国内知名的AI原创文章写作平台&#xff0c;它们各有特色&#xff0c;可以满足您的不同需求。 5个AI人工智能平台推荐&#xff1a; …

沉浸式翻译

chrome沉浸式翻译插件 网页双语翻译&#xff0c;完全免费使用&#xff0c;支持Deepl/Google/Bing/腾讯/有道等。 一款免费、用户友好、简洁、革命性、广受好评的人工智能双语网络翻译扩展程序&#xff0c;可帮助您有效地弥合信息差距&#xff0c;也可在移动设备上使用&#xff…

ChatGPT新功能探索,沉浸式内容处理体验

ChatGPT已经正在广泛被企业接受&#xff0c;用来大幅提高效率。但传统的聊天模式在大篇幅文字处理时并不好用。因此新功能“沉浸内容处理模式”被推出&#xff0c;用来应对论文、邮件、文案的编写和优化。那我们就来体验一下这个新功能效果如何。以处理工作邮件为例。 一、从传…

大型语言模型 (LLM) 的两条发展路线:Finetune v.s. Prompt

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 在大型语言模型的研究中&#xff0c;研究者对其有两种不同的期待&#xff0c;也可以理解为是两种不同的路线&#xff0c;具…

违禁敏感词检测

很多站长和自媒体人都有这样的烦恼&#xff0c;因为不慎发布违禁、违规内容比如涉黄、恐怖暴力、赌博、低俗辱骂、政治敏感等&#xff0c;导致文章下架或者网站整改。 另外&#xff0c;自从新《广告法》出台后&#xff0c;作为广告、营销人等群体在写文案的过程中必须时时注意新…

ChatGPT神器Code Interpreter,用做数据分析如此丝滑!

前几天&#xff0c;OpenAI 宣布要在一周之内将官方插件 Code Interpreter 通过设置中的 Beta 面板向所有 ChatGPT Plus 用户提供。 这个消息让很多人激动了起来&#xff0c;毕竟此前 Code Interpreter 一直处于封闭测试阶段&#xff0c;只有一小部分用户真正使用过。这些内测用…

艾瑞巴蒂看过来!OSSChat 上线:融合 CVP,试用通道已开放

还在纠结于反复查找开源项目的技术文档&#xff1f; 团队常因频繁搜索开源项目主页导致效率低下&#xff1f; 每天都要问一遍【开源项目中那些“小白问题”究竟有没有更快的解决方法&#xff1f;】 对此&#xff0c;只想对你说&#xff1a;赶紧试试 OSSChat&#xff01;赶紧试…

AI生产力工具平台AI100.ai今日正式上线,ChatGPT API和Prompt机器人免费试用

上个月&#xff0c;AI100.ai开放注册&#xff0c;我们发出1000份免费测试邀请&#xff0c;得到了开发者的积极参与和反馈&#xff0c;加速了AI00.ai的功能优化。AI00.ai今日正式上线&#xff0c;为感谢广大开发者的支持&#xff0c;现面向开发者启动ChatGPT API免费试用活动&am…

免费、不用部署SD:AI二维码制作教程

大家好&#xff0c;我是可夫小子&#xff0c;《小白玩转ChatGPT》专栏作者&#xff0c;关注AIGC、读书和自媒体。 最近&#xff0c;风格化的AI二维码&#xff0c;应该没少见吧。生成的原理大家大概也知道&#xff0c;主要通过stable diffusion和一些插件来完成&#xff0c;但对…

宠物店小程序功能有什么_分享宠物店小程序开发制作功能介绍

宠物店微信小程序主要功能有&#xff1a; 1、宠物寄养支持在线提交寄养预约&#xff0c;自主选择宠物寄养位。上门接送或自主接送。一键提交&#xff0c;摆脱繁琐流程。 2、线下买单线下店铺消费也可以使用会员余额。 3、宠物服务可以选择一键搜索或服务分类查询需要的宠物服务…

猫狗分类,猫狗大战

项目全部代码在文章末尾 1、任务描述 Cats vs. Dogs&#xff08;猫狗大战&#xff09;数据集下载地址为https://www.kaggle.com/c/dogs-vs-cats/data。这个数据集是Kaggle大数据竞赛某一年的一道赛题&#xff0c;利用给定的数据集&#xff0c;用算法实现猫和狗的识别。 其中包…

Cats vs. Dogs(猫狗大战)数据集处理

猫狗大战数据集 Cats vs. Dogs&#xff08;猫狗大战&#xff09;数据集下载地址为https://www.kaggle.com/c/dogs-vs-cats/data。这个数据集是Kaggle大数据竞赛某一年的一道赛题&#xff0c;利用给定的数据集&#xff0c;用算法实现猫和狗的识别。 其中包含了训练集和测试集&a…

宠物管理|养犬登记|宠物识别|智慧城市监控|城市犬类管理系统

关键词&#xff1a;宠物识别、宠物面部识别、宠物管理、宠物社交、宠物培训、宠物保险、鼻纹识别、宠物登记、宠物比赛、宠物走失、宠物用品、智慧宠物&#xff1b; “犬类管理”正日益成为城市治理的重要话题之一。 据最新数据&#xff0c;2020年全国犬数量为5222万只&#…

一文读懂物联网大数据产业链

原文地址 大数据开启了一个大规模生产、分享和应用数据的时代&#xff0c;它给技术和商业带来了巨大的变化。麦肯锡研究表明&#xff0c;在医疗、零售和制造业领域&#xff0c;大数据每年可以提高劳动生产率0.5-1个百分点。物联网时代&#xff0c;大数据在核心领域的渗透速度有…

专访智齿科技徐懿丨企服公司四要素:智能、融合、产品复杂度、客单价

关注52AI&#xff0c;做AI的行业领先者。QQ人工智能行业交流群&#xff1a;626784247. 01 徐懿认为&#xff1a;客服企业的两大核心要素是“融合”以及“智能”&#xff0c;围绕这两点&#xff0c;该领域所有公司将被划分为四个象限&#xff0c;而客服行业未来的趋势一定是向着…

大数据的产业链分析,大数据完整的产业链构成

大数据的产业链分析大数据完整的产业链构成&#xff0c;可分为标准与规范、数据安全、数据采集、数据存储与管理、数据分析与挖掘、数据运维以及数据应用几个环节&#xff0c;覆盖了数据从产生到应用的整个生命周期。 大数据的产业链分析 1数据标准与规范 大数据标准体系是开展…

Tableau 聚合计算 - 分组求和(sum、fixed、include的使用)

一、聚合计算例子 有以下数据&#xff1a; // 计算1 SUM(IF [shuxue]123 then [yingyu] END)// 计算2 IF [shuxue]123 then {fixed [shuxue]: SUM([yingyu])} END// 计算3 IF [shuxue]123 then {SUM([yingyu])} END// 计算4 {fixed [shuxue]: SUM([yingyu])}// 计算5 {include…