
C++
grey_csdn
这个作者很懒,什么都没留下…
展开
-
475_使用Arduino学习C++之函数的weak属性
全部学习汇总: https://github.com/GreyZhang/Arduino_Cpp 其实,今天做的这个小结并不是一个C++的知识点。但是,这个知识点是我在看Arduino的C++代码的时候学到的,因此在此做一个简单的梳理总结。 在Arduino的main函数中有如下的代码: 而这个函数的声明: 上面的这个声明,涉及到了一个weak的属性。我查了一下网络的信息,其实这个并不是C++的一个功能...原创 2020-12-09 20:29:04 · 563 阅读 · 0 评论 -
410_Arduino UNO库模块梳理
全部的学习汇总:https://github.com/greyzhang 通过Arduino的IDE帮助菜单,其实能够找到一部分库的文档。首先,内置的标准库有如下的一个概括总结。 上面这个标准的库清单基本上是一个通用的库,其中有几个我基本上用过或者接触过了。接下来一个个看一下。EEPROM,其实这个是AVR单片机里面的一个模块; 以太网,使用以太网的板盾连接以太网。目前,我手里已经有这么一个板盾了,但是更多可能是在用他的SD卡卡槽。后面抽时...原创 2020-09-26 09:16:41 · 1297 阅读 · 0 评论 -
406_Arduino EEPROM存储清空例程分析
全部的学习汇总:https://github.com/GreyZhang/arduino_uno 今天有点晚了,本来想就此收住直接休息。正好换了一个九块九包邮的键盘,试试手感,玩玩emacs。于是,又看了这个例程。 例程的代码如下: 跟官方的显示效果或许稍有不同,我按照我的习惯进行了一点排版的调整。 上面的代码太简单了,其实一看就懂。一个for循环,用0填充了整个EEPROM的空间。写完之后,点了一个灯。...原创 2020-09-22 23:19:30 · 879 阅读 · 0 评论 -
404_SdFat文件的创建和删除
全部的学习汇总: https://github.com/GreyZhang/SdFatFs 看一下SdFat的文件创建以及删除功能,还是从例程开始。 测试,首先检查是否有example.txt这个文件,并给出结果。然后,尝试打开文件,没有的时候创建。之后,再次测试是否存在,并给出结果。最后删除,在此检查并给出结果。 运行一下效果如下: 接下来,我直接在SD卡中创建一个这样的文件进行测试。...原创 2020-09-21 21:48:55 · 681 阅读 · 0 评论 -
403_SdFat的文件读取测试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs 想测试一下SdFat的读取功能,根据例程修改一下,读取一个5M的文件,看看速度。读取速度,我按照串口打印的时间戳来算。测试代码如下: 其他的代码,跟例子基本一致。首先,第一次我把全部的数据打印出来做了一次对比,先确认这个读取动作是没有问题的。这一次测试,去掉了串口打印,应该不会减缓文件的读取。但是,目前的读取方式看上去似乎是一个字节一个字节读取而不是一行行读...原创 2020-09-21 21:04:35 · 510 阅读 · 0 评论 -
401_Petit FAT文件系统在Arduino上的移植测试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs PETIT文件系统其实是FatFs的一个缩减版本,主要面向8bit的MCU等存储资源比较有限的平台。具体的资料参考官方网站:http://elm-chan.org/fsw/ff/00index_p.html。 尝试做了一下移植,我觉得一个文件系统比较理想的移植状态是改一下SPI其他的基本上自动适配。其实,这个基本上就做到了这样子。 整个文件系...原创 2020-09-20 19:07:44 · 727 阅读 · 0 评论 -
399_FAT文件系统DPT分区表小结
全部的学习汇总: https://github.com/GreyZhang/SdFatFs 一个文件系统的实现,一点点看下来似乎还是很麻烦的。主要是有很多概念性的信息没有弄清楚。 文件系统的区块0是预留区,这里面其实分为两部分:前面的446个字节是MBR,后面的64个自己是DPT分区。这次先小结一下DPT分区的结构。 找到一份微软的FAT文件系统的硬件白皮书,这部分是Arduino的库文件中提到的,发现这部分没有找到描述。不过,比...原创 2020-09-18 21:20:44 · 715 阅读 · 1 评论 -
398_Arduino上实现SD卡类型判断
全部学习汇总: https://github.com/GreyZhang/SdFatFs 前面已经测试了Card Command的功能正常,接下来使用相应的功能尝试判断SD卡的类型。主要的测试流程在文档中有一个描述: 这里需要注意的是,有些命令比如ACMD41属于Application CMD。发送的方式跟CMD有一定相似,但是多一部分信息。尝试做CMD的发送的时候,我顺便把这个命令实现了,这次正好测试一下。 ACMD的发送实...原创 2020-09-18 21:14:45 · 475 阅读 · 0 评论 -
396_Arduino SD卡驱动命令发送C实现尝试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs 这次总结一下Arduino的SD卡驱动实现,并把这部分代码尽量改成更加容易移植的C模式。因为,C模式在C++中依然可用,反之则不然。再者,我现在的工作主要的编程环境还是C。 看一下主要的代码实现: 根据代码,大致分析一下过程。我增加一份加了中文注释批注的代码如下: 这样,比我直接用文本去描述整个过程看起来会更加清晰...原创 2020-09-17 23:42:46 · 436 阅读 · 0 评论 -
395_使用Arduino学习C++-变量赋值
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 最初觉得像初始化、赋值等都是再通用不过的模式了。但是,现在看来似乎还是有注意的地方,在此放一个例子对比下看看。 软件编译运行效果: 看得出来,可以这样进行批量的统一赋值。 可能是因为之前编程规范的约束,之前一直没有这么用过。接下来,测试下C语言中的相应操作。 代码如下:...原创 2020-09-17 20:34:41 · 1530 阅读 · 0 评论 -
389_使用Arduino学习C++-成员的初始化
全部的学习汇总: https://github.com/GreyZhang/Arduino_Cpp 前面,已经小结过通过构造函数完成成员的初始化的方法。其实,还存在其他的方法可以实现,那就是直接在类的成员定义的时候进行初始化。一份测试代码如下: 软件编译之后的运行效果: 这样,在进行成员初始化的时候其实比使用构造函数的方式更加简洁清晰。此外,还有一种专门处理初始化的方式,其方式看上去有点像两种方式的结合。例子如下:...原创 2020-09-16 21:28:15 · 490 阅读 · 0 评论 -
388_使用Arduino学习C++-private的使用
全部学习的汇总:https://github.com/GreyZhang/Arduino_Cpp 之前总结过了public,在此结合public一起看一下private的使用。之前的一份代码如下: 运行效果: 其实,上面的部分代码等效模式如下: 可以有同样的运行效果。除此之外,需要说明的是public和private可以在一个类中多次出现。比如如下可能: 这样也会有同样的效果...原创 2020-09-16 21:22:39 · 578 阅读 · 0 评论 -
387_使用Arduino学习C++-在类内实现的函数
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 在小结类内实现的函数之前,先看一个之前总结过的设计。 软件运行效果如下: 接下来尝试在类中实现一个函数,这种使用方式我在Arduino的库实现中是看到了的。按照教程上的描述,其实这是设计了一个内联函数。这种函数一般是使用频繁且涉及简单的函数。上面的例子重新修改如下: 软件重修编译测试结...原创 2020-09-16 21:13:59 · 515 阅读 · 0 评论 -
386_使用Arduino学习C++-默认的构造函数行为
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 回到之前熟悉的一个状态: 给类增加一个构造函数,这会带来一个问题,如果不进行显式的初始化编译会报错。如下面的代码会报错。 如果避开这个操作如何实现呢?比如,让初始值默认为0?之前也小结过这个问题,当时使用了函数重载的技巧。 修改前面的设计: 这样,软件可以正常编译通过。...原创 2020-09-15 20:48:39 · 525 阅读 · 0 评论 -
385_使用Arduino学习C++-函数的默认参数
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 看一个函数参数默认值的处理,设计如下测试代码: 软件可以正常编译通过,运行的结果如下: 从上面的结果看得出,这样的函数其实可以接收变化数目的参数,参数具有缺省的效果。这种行为类似python中的效果了。如果给了明确的参数,则会按照传递的参数进行初始化。如果传递参数少,看结果应该是按顺序传入,后面的采用默认。...原创 2020-09-15 20:22:37 · 791 阅读 · 0 评论 -
384_使用Arduino学习C++-类以及public参数
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 在进行关于C++ class的小结之前,再次看一下struct。其实,这个在我找到的上一份教程中大量地使用了。 写一段测试代码如下: 以上是对一个类的定义,使用的struct。执行的测试代码如下: 最终的执行效果: 接下来,做一下修改,struct改成class的一种实现:...原创 2020-09-15 19:57:10 · 1017 阅读 · 0 评论 -
383_实现SD卡文件系统所需要的指令梳理
全部的学习记录汇总: 这一份命令集合不是来自于SD卡的文档,尽管我也找那份文档参考过。我整理的主要依据还是Arduino的库文件实现。 涉及到的命令整理如下:CMD0,在片选拉低的时候让SD卡切换到SPI模式; CMD8,验证SD卡接口工作状态; CMD9,读取CSD寄存器,其中CSDN的缩写为:Card Specific Data; CMD10,读取SD卡的ID信息; CMD13,读取卡的状态信息; CMD17,从SD卡中读取单个bl...原创 2020-09-14 22:00:59 · 578 阅读 · 0 评论 -
382_使用Arduino学习C++-namespace的用法
全部学习笔记汇总:https://github.com/GreyZhang/Arduino_Cpp 之前选择了一本不算是很合适的学习教程,《像计算机科学家一样思考C++》版本。可能这本书的主要目的还是在于教人一套思考的方法而不是教授C++编程本身。 之所以转过来学习C++,主要是我在看Arduino库文件设计的时候看到了一个namespace就完全蒙圈了,不知其意。 重新换了一份教程,C++之父编写的。开篇不远,找到了nameps...原创 2020-09-14 20:33:43 · 834 阅读 · 0 评论 -
381_使用Arduino学习C++-构造函数
全部的学习记录汇总:https://github.com/GreyZhang/Arduino_Cpp 前面的方法小结中已经提到了构造函数,但是这个使用似乎还是有更深层次的技巧。搜集了一点资料看了下,简单做一点测试和小结。 使用上一次的测试代码做一下修改,我们先实现一个比较简答的结构体描述。代码如下(部分还会用到的信息,保留成了注释): 接下来,尝试创建两个对象: 测试结果如下: ...原创 2020-09-13 20:39:27 · 896 阅读 · 0 评论 -
380_使用Arduino学习C++-方法
全部的学习笔记汇总: https://github.com/GreyZhang/Arduino_Cpp 看了一天的资料,感觉终于算是进入到正题了,学习一下C++中的方法。先按照教程的指点,写了一个简单的例子如下: 一个函数是一个普通函数还是一个方法,很关键的一点在于它声明的位置。如果是一个方法,那么它的声明位置应该在一个结构体中。而这个方法的实现,需要增加一个结构体名称::的修饰。 在方法实现的时候,第11行代码中用到了一个t...原创 2020-09-13 18:34:08 · 1771 阅读 · 1 评论 -
379_使用Arduino学习C++-值传递以及引用
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 接下来总结一下值传递以及引用,其实这里涉及到的概念主要是函数参数的处理。对应的操作分别是C语言中的普通数据类型传入参数和指针类的传入参数。 设计两个测试函数如下: 对于两个函数的测试如下: 测试结果如下: 这两个函数中,第二种加了&的方式就叫做引用。从效果看,有C语言中指针的...原创 2020-09-13 16:14:24 · 1134 阅读 · 0 评论 -
378_使用Arduino学习C++-结构体
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 总体看来,C++中的结构体跟C语言中的结构体效果差不多。根据我看的教程中的例子,结合我以前的经验把与我C语言编程体验不同的地方梳理一下。 测试代码如下: 直接在一个函数体内定义结构体,这还是我第一次尝试,但是在C++的环境下似乎就是这么灵活。 程序运行效果: 几点需要注意的的知识点...原创 2020-09-13 15:39:31 · 2135 阅读 · 0 评论 -
377_使用Arduino学习C++-字符串
全部的学习笔记汇总:https://github.com/GreyZhang/Arduino_Cpp 接下来,小结一下字符串的简单使用。我先按照教程中尝试了spstring,结果没成功。正好在前面的SD卡例子分析中看到了Arduino中字符串的操作,直接按照Arduino的思路尝试一下几个测试。 测试代码如下: 上面的代码中测试了字符串的定义以及初始化,通过字符串的可变赋值可以看出这里有一个空间动态分配的动作。操作字符串的时候,经...原创 2020-09-13 14:51:08 · 696 阅读 · 0 评论 -
376_使用Arduino学习C++-函数重载
全部的学习总结在此:https://github.com/GreyZhang/Arduino_Cpp关于函数重载,通过教程的信息我觉得似乎就是一个关键点:函数重载在C++中是允许的,只要保证参数不同。这里没有要求返回值不同,其实是可以理解的。因为程序可以运行带有返回值的函数,然后放弃返回结果。如果是这样的话,肯定会有语义上的差异。或许,这样编译器就不好识别究竟该使用什么参数了。按照这个描述,写测试代码如下:运行结果如下:尽管存在只声明了一个函数这...原创 2020-09-13 12:02:07 · 704 阅读 · 0 评论 -
375_使用Arduino学习C++-函数
全部的学习记录汇总:https://github.com/GreyZhang/Arduino_Cpp 小结调试一下简单的函数概念,这里有一些小细节之前注意到了,这里正好总结一下。尤其是跟我现在的C规范不是很一致的地方。 上面的代码是跟前面的例子大致相同的,只是多了一个函数化。这里,与我先前习惯或者经验不同的地方在与当函数不需要参数的时候,C规范中一般会加上一个void。而我最近接触到的Arduino的C++代码中这个似乎都是没有的。然而,我测试了...原创 2020-09-13 11:27:22 · 638 阅读 · 0 评论 -
374_使用Arduino学习C++-数据计算
全部的学习记录汇总:https://github.com/GreyZhang/Arduino_Cpp 按照C++的教程看,C++可以提供大量的数学运算的功能。几乎包括你能够想到的一切数学计算。我想这部分应该不会是语言本身的行为,可能是依赖于一些库的功能吧?偏巧教程上也没这方面的完整代码,而我使用Arduino测试的时候一切默认PASS。 测试了几个简单的数学运算如下: 运行结果: 运算十分顺利,看上去结...原创 2020-09-13 10:25:22 · 447 阅读 · 0 评论 -
373_使用Arduino学习C++-安静的转换
全部的学习记录汇总:https://github.com/GreyZhang/Arduino_Cpp 这个标题来自于《C专家编程》,我印象中那本书中有这么一个章节用来介绍数据类型的转换。这里,通过几个例子来看看C++中的注意点。我参考的教程是《像计算机学家一样思考C++版本》。在语言本身的细节上不一定会很细致,这是第一本,后面还可以继续“刷题”。 写测试代码如下: 运行结果: 先额外说一点昨天忘记记录的...原创 2020-09-13 09:43:39 · 545 阅读 · 0 评论 -
372_使用Arduino学习C++-数据类型与转换处理
全部的学习记录汇总:https://github.com/GreyZhang/Arduino_Cpp看到了教程中关于数据类型的处理以及转换行为的描述,感觉这部分跟C语言还是有不同之处。在此做一个整理小结。 C语言的行为在此不做陈述,毕竟我写的只是学习笔记而不是教程。 关于C++,写一份测试代码如下: 执行结果如下: 这里有两点需要注意:同一个函数可以有不同的行为,这个我大概了解过可能是重载功能;...原创 2020-09-12 22:43:01 · 594 阅读 · 0 评论 -
371_使用Arduino学习C++-hello world
全部的学习记录汇总:https://github.com/GreyZhang/Arduino_Cpp 学习任何编程语言基本都是从hello world开始的。我还是要走一下这个过程,但是说起来我也不算是毫无基础的,毕竟C语言大概还是知道一点点的。我也清楚,使用Arduino学习C++跟在电脑上会有很多的差异。 不过,hello world已经成了一种颇有神圣之感得到仪式,因此这一步还是要做一下吧! 我创建了Arduino的工程,写...原创 2020-09-12 22:09:28 · 802 阅读 · 0 评论