NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理图模块的5大部分与电源部分组成,即连接端子.ST-LINK.MCU.USB.以太网和电源部分. 电源部分考虑的非常充分,5V有三路输入,一路是有外部输入6-15VDC电源经U5(LD1117S50TR)转为5VDC电源:第二路是USB端口提供的5V电源,同时还有电流限制保护U4(ST890CDR):…
前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用库函数使用GPIO引脚功能.   补充   本文章为多年前学习方法总结,基本是一通百通(PS:学的是方法而不是技术本身).   stm32系列帮助文件GPIO手把手详细解说   编写GPIO功能,建议初学者学习帮助文件中的案例.    这是固件库V3.4中的GPIO源文件,而V3.5中的资源文件使用的不是固件库,V3.4这个文件明显是GPIO操作LED的,所以…
前言   Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章.   libzip   libzip是一个C库,用于读取,创建和修改zip档案.可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件.在不关闭存档的情况下所做的更改可以还原.  当前版本是1.7.3,于2020年7月15日发布.  官网:https://libzip.org…
数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作.Arrays工具的方法说明如下: Arrays.equals(a1, a2); // 判断a1和a2两个数组是否相等,也就是每个元素是否都相等 Arrays.fill(a, val); // 往数组a全部填入指定的数值val dest = Arrays.copyOf(src, newLength)…
经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是通用算法,比如牛顿迭代法.二分查找法等等,这些通用的算法代码结构固定,很多地方会用到,倘若每次都复制粘贴无疑是苦大仇深:基于此,亟需对纷繁复杂的代码段加以梳理,一方面把代码行依据功能进行划分,这样剥离出来的各段代码不会相互影响:另一方面封装通用的算法代码,做到只定义一次,就能被多次调用.这样既提高了…
前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定义的圆括号内部直接留空.以打印当前时间为例,下面的showTime方法没有输入参数也能正常实现: // 没有输入参数,则方法名称后面的圆括号内部留空. // showTime方法的用途是显示当前时间 private static void showTime() { Date date = new D…
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允许不返回任何参数.与输入参数类似,输出参数也需要定义数据类型,它的返回值类型在方法名称前面定义,具体位置参见方法的定义形式“访问权限类型 可选的static 返回值的数据类型 方法名称(参数类型 参数名称)”.这里特别要注意,即使方法不返回任何输出参数,也需定义一个名叫void的返回值类型,而不像输…
方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减乘除符号,对应Java编程的“+”.“-”.“*”.“/”.但是随着运算类型的增多,新的运算符号来不及创造了,于是出现了函数形式的运算操作,譬如三角函数sin.cos等等.这种数学函数就是方法的雏形,对于三角函数来说,角度类似方法的输入参数,而函数值类似方法的输出参数.自从有了方法,大部分的算术计算…
前面介绍了数值包装类型,因为不管是整数还是小数,它们的运算操作都是类似的,所以只要学会了Integer的用法,其它数值包装类型即可一并掌握.但是对于布尔类型boolean来说,该类型定义的是“true”和“false”的布尔值,并非123之类的数字,因此还需专门的包装类型Boolean来包装boolean.Boolean作为包装类型,与数值包装类型相似,它也拥有三种变量初始化方式.由于布尔包装类型的初始化代码雷同数值包装类型,这里不再赘述,具体代码示例如下: // 初始化包装变量的第一种方式:直…
早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字节大小.但是长整型也只能表达到负2的63次方~2的63次方-1,超出这个范围的巨大整数,竟连long类型也放不下.何况现在不管手机还是电脑的内存都是以GB计量,因此原先锱铢计较几个字节的数值类型便不合时宜了.为此Java又设计了一种大整数类型BigInteger,这个BigInteger能够表示任意…