自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 问答 (1)
  • 收藏
  • 关注

原创 STM32开发笔记04---配置系统时间

架构图思考重点本文的目的是使用HSE外部晶振来配置系统时钟参考手册中的时钟树如何理解理解开发版初始化过程中对系统时钟的操作如何自行变更系统时钟配置时钟源在开发版STM32F429,以HSE, HSI, PLL作为主要的系统时钟的信号来源,并拥有LSI, LSE低速内外部信号时钟源,两者频率分别为32, 32.768kHz时钟源相当于节拍器的功能,藉由稳定的信号源输出,可以有效配置出单位时间内系统的运算次数。下面探讨三个主要的系统时钟来源的功能与特色:HSE高速外部时钟信号可由

2022-01-22 21:06:47 2846

原创 git不再支援帐号密码验证

git在8/12停止了使用帐号密码作为资料上传的验证,改为较为安全的ssh,所以假如你使用帐号密码作为验证会得到缺乏权限的http 403 error解决方法是在本机端建立私钥,在github端要使用本地端生成的公钥,使双方进行同步加解密机制首先需要在本地端生成金钥存储key的位置不用改动,直接enter就好,接下来会要求设置密码,一样可以直接enter到底完成密码设定以后,公钥与私钥式存放在/home/zach/.ssh 中,我们cd到这个资料夹底下就可以看到id_rsa:私有金钥,与id_rs

2022-01-16 14:58:12 355

原创 STM32开发笔记03---Bit-Banding

架构图带位操作原理以往我们在使用暂存器时,都是在操作该暂存器32bits(4bytes)的储存地址,要对其中单一bit进行操作,可以仰赖bit operation来完成。而bit-banding(位带操作)的目的就是实现直接操作单一比特位为了达成这个目的首先我们有必要理解STM32的特殊存储区段位带区与位带别名区。下图中的红色方框代表位带区的范围,可以看到SRAM中位带区佔有1MB,外设区段部分,1MB的储存范围刚好涵盖了AHB, APB1, APB2,可以说我们使用的大部分外设,例如GPIO,

2022-01-08 21:46:05 1113

原创 Java学习之路08---方法

架构图前言有鑑于各个地区的专业用语不同,所以本文会尽量使用英文来呈现有差异的部分,还请见谅方法简介甚么是方法方法就是用来解决特殊需求的一个功能模块、程式语句的集合,把需要重複使用的功能包装到方法裡面。例如我们最常使用的System.out.println(),就是调用System类中实例化的对象out中的方法println()在java中方法一定存在于某个类之中,这点跟C/C++, Python有点不同方法格式一个方法的编写可以参考下列格式:修饰符 返回值类型 方法名(数据类型1 参

2021-12-31 15:27:02 321

原创 STM32开发笔记02---新建库函数工程

架构图创建工程首先我们先创建一个资料夹example,路径最好配置为全英文,然后分别在example资料夹内再创建6个资料夹,分别是:DocLibrariesListingOutputProjectUser然后开启keil,选择Project → New uVision Project新建一个工程位置选择我们刚刚创建的example资料夹下的Project资料夹,命名后按下确定新增专案接着选单会要求你选择开发版的型号,查看开发版资讯然后依序找到对应版本,如图我的开发板使用的是S

2021-12-25 09:47:26 684 2

原创 C语言杂谈01---如何理解条件编译

架构图前言由于地区翻译关係,有些书籍将macro翻译成"巨集",有些翻译成"宏",为了避免混淆(我自己),所以文章内容会以英文名macro来代替中文译名甚麽是条件编译条件编译就是根据已经定义的macro进行选择性判断的语句,它会在compiler进行编译前完成,主要由预处理器负责预处理器会将条件编译指令的结果告诉compiler,让他去编译指定区段的程式码。条件编译指令可能会出现在程式的任何一个位置,端看使用方法,例如下方这个简单的程式范例就含有条件编译:#include <stdio.

2021-12-17 22:26:30 1134

原创 Java学习之路07---数组

架构图创建阵列作为参考数据类型的一员,阵列(array)在java中其实就是一个物件,因此后续处理阵列时需要将物件的概念套用上,对于学过C/C++的人可能需要一点思想上的转换首先我们来看看在java当中,是如何创建一个阵列的。java宣告时可将[]置于变数名前方或后方,但为了与C/C++做出区别,官方推荐将[]放到变数前方:int[] arr1; // 推荐int arr2[]; // 也可以不过宣告完阵列变数arr以后,阵列事实上并不真正存在对于一个阵列来说,他具备一个物件的特性,也就

2021-12-12 23:59:17 202

原创 STM32开发笔记01---暂存器简介

架构图前言在进行底层开发时,尤其是C语言,我们时常与暂存器打交道,不过到底暂存器的确切定义是甚麽?有时很难确切定义有些书将暂存器想像成一排书柜中的特定一格,对这些特殊抽屉,可以将抽屉打开拿取裡面的纸条,也可以把新的纸条放进去。我个人蛮喜欢这个比喻法,但也让我思考,到底能不能用更精准的方式去定义暂存器呢思考重点暂存器与记忆体映射之间的关联暂存器存在的意义如何查找数据手册编写一个点灯案例暂存器概念为了釐清暂存器的概念,我特地找了一块32bits的STM32F4型开发版,核心使用STM4

2021-12-05 22:27:21 1394

原创 Java学习之路06---逻辑结构陷阱

架构图悬挂逻辑判断语句若是只有连接一条语句时,这一条语句会与离它最近的逻辑判断语句相连,例如以下例子的System.out.println("none-zero!");会接在if结构下,这种语法结构称为悬吊while(iter < 10) if(iter != 0) System.out.println("none-zero!");错误的悬吊常常发生在缩排想表达的逻辑与实际程式执行逻辑不匹配例如下方程式,当a不大于1时,开发者想把b赋值成20,但else语句的悬吊特性,它其实是连接

2021-12-04 22:34:20 329

原创 Java学习之路05---运算子

架构图前言表达式是程式进行算术运算中的表示方式,我们可以简单地把表达式拆解为表达式 = 运算子 + 操作变数,也就是说任何运算子都不能脱离变数单独存在在java中依据使用功能可以区分成多种不同的运算子,该小节主要聚焦介绍几种常见的运算子,并探讨表达式中若存在多个不同运算子时该如何判断优先顺序重点运算子算术运算子(Arithmetic Operators)赋值运算子(Assignment Operators)关係运算子(Relational Operators)*三目运算子(Ternary

2021-11-27 23:25:56 449

原创 Java学习之路04---类型转换

架构图前言我们再进行Java程式编写时,常常会遇到运算的问题,例如常见的整数加减、浮点数的乘除、甚至是字元类型的运算。但很多时候运算的操作数不一定都是相同数据类型的这时候我们就需要仰赖型别转换(Casting)将双方数据类型转换成统一类型,才可以继续运算。当我们说到型别转换,主要就是自动型别转换与强制型别转换两种布林类型数据不能进行型别转换自动类型转换自动型别转换顾名思义就是不需要使用者进行手动添加操作,编译器自行就会进行处理的型别转换,所以又称为隐式型别转换。出现条件为转换后变数类型的存

2021-11-20 14:43:20 487

原创 Java学习之路03---标识符、关键字、变数概念

架构图前言Java程式是一系列对象的集合,而对象之间透过彼此之间调用方法来达到开发目的,因此在认识Java程式前需要特别注意几个专有名词:类(class): 一个抽象的模板,例如人,他有身高、体重等属性,有说话、跳舞等动作对象(object): 一个类的实例,例如美国人、欧洲人等方法(method): 包在类当中的函数,可以代表该类的行为,例如人会说话。一个类可以拥有多个方法实例变数(Instance variables): 每个类都有专属的变数,并且可以拥有多种不同变数接着来看看一个

2021-11-14 17:30:26 436

原创 网路是怎样连接的(十二)IP地址怎么看

思考重点如何看懂IP代表的意思子网内的设备可以被直接访问吗网路设定中的255.255.255.0是甚么公有IP与私有IP差别固定IP与浮动IP区别架构图IP地址表示方法IP地址相当于电话号码的概念,想要与对方通讯必须要知道对方的电话号码才行在网际网路中,相应主机之间是透过IP地址进行沟通,也就是说使用TCP/IP网路互相沟通的主机一定要配置IP地址,因此IP地址可以说是网路传输中最基本的部分IP地址总长度为4个bytes,每一个byte为一组,总共分成4组,通常用十进位制表示:

2021-11-12 23:00:35 2527

原创 Java学习之路02---Eclipse开发工具

上一节我们谈到JDK的安装以及第一次编译java程式,不过真实软体开发场景,使用IDE会更加有效率,所以本章就来演示Eclipse的下载与安装步骤,并执行一个简单的范例程式下载与安装首先我们到Eclipse官方下载页面可以看到以下图示,为了开发方便,我们选择下方的Download Package,Package版本好处在于下载完成并解压缩后点选执行档就可以使用,十分方便进入下载选单后会看到玲琅满目的下载版本,由于只是用于简单个人开发,我们选择Eclipse IDE for Java Develop

2021-11-07 19:12:17 7823

原创 Java学习之路01---环境安装

环境安装在运行java程式之前我们需要先安装Java SE Development Kit,我们选择相对稳定的java 8版本第一次到Oracle官网的朋友需要註册一组帐号,填入相关资讯再到信箱启动帐号就可以下载了依照作业系统挑选安装档,到本机页面点右键查看,系统类型为win10 64位元,所以安装包需要选择x64 Installer,若是旧型电脑需要注意是不是32位元系统,Mac电脑则选择macOS的安装包,以此类推下载完成后只要执行安装档就可以了,预设路径是C:\Program Files\

2021-11-06 12:10:07 105

原创 Node-RED学习心得(实战篇1)

架构图核心知识点安装节点再进行操作前我们需要先安装第三方节点库,点右侧选单栏内的节点管理选项Node-RED选单分别安装图中的两个节点库dashboard-evinode-red-contrib-aedes这两个分别是图表与操作介面、MQTT相关的节点库安装节点读取数据篇实现目的目的1: 从网站资料中读取json格式的资料目的2: 生成UI介面目的3: 手动输入序号,输出族裔消息目的4: 清除dashboard功能执行结果原住民人口普查使用节点整体的

2021-11-04 20:42:16 5261

原创 网路是怎样连接的(十一) 初探IP协议

思考重点封包是如何找到下一个端节点的IP地址在封包转发中扮演的角色MAC地址在封包转发中扮演的角色IP协议会为封包加上那些头部核心知识核心知识点网路层实现的目的网路层,主要负责跨区段主机之间的通信,所谓跨区段就是指电脑之间不是直接的连接,而是透过多个路由器、交换机或中继器等端节点相连。该章我们主要探讨IP封包如何进行转发,以及它与MAC之间的关係** 网路层与传输层对比**传输层提供进程与进程之间的相互连线服务网路层提供不同主机之间端到端的通讯服务网路层目的在于解决两个

2021-11-02 23:36:00 254

原创 Node-RED学习心得(操作篇)

架构图核心知识点基本功能本篇会介绍6项常用的子模块,并适时使用案例来介绍它们的功能以及再使用上的一些细节inject共通模块最常用到的子模块之一,作为输入用途,可以自行选择payload类型inject模块创立inject节点时点击模块可以进入设定,选单中主要分为5个要素:模块名称为inject设定名称物件属性预设为payload可以自行添加属性物件属性资料类型指定属性类型,包含常见的字串、数字、布林、json等主题指定topic名选择输入

2021-10-28 14:38:57 5224 1

原创 Node-RED学习心得(安装篇)

架构图核心知识点简介Node-RED是基于Node.js建构的web浏览器可视化模块开发工具,所以不需要熟悉Node.js。Node-RED以事件(flow)为基础进行开发,它具有提供可视化的开发模块,对于不熟悉语言的开发者较为友好将数据以不同类型图表呈现,尤其是二维数据图,方便使用者处理长时间、大批量数据另外Node-RED也可以连接多种不同的装置、介面、云服务、资料库,例如官网上的介绍,因此也可以用来处理后端任务Node-RED官网简单来说它可以结合多种不同的嵌入式装置、IO

2021-10-27 13:23:51 4431

原创 Modbus RTU简介(上)

1 前言1.1 什麽是ModbusModbus是一种用于工业控制的标准通信协议,它定义了装置之间在应用层的消息封装模式、沟通方法、沟通顺序。Modbus的优势 :Modbus协议是开源免费的Modbus支援多种常见工控接口(RS232, RS485, TCP/IP etc.),且可以各种物理层装置上传输(双绞线、光纤、无线等)Modbus格式简单易于开发Modbus能够将众多设备连接到DCS, PLC系统上,再利用服务器(云、中央计算机)进行监控与下达指令,以便于集中式控制。

2021-10-26 16:20:41 15800

原创 网路是怎样连接的(十)UDP简介

思考重点为甚麽要设计UDP?UDP对比TCP的优势?核心知识核心知识点UDP与TCP的差别众所皆知,TCP是面向连接的可靠传输,前几篇文章我们也从TCP消息的收发讲到如何确认回应,再谈到TCP一系列特殊的效率优化机制,本篇就要来谈谈传输层的另一种传输协议UDP(User Datagram Protocol),到底UDP相较TCP有什麽不同之处?其实如果我们知道TCP设计的初衷,那麽就可以理解UDP了TCP具有响应确认与重传、滑动窗口、流量控制、壅塞控制,之所以这麽複杂,无非就是要面对几个

2021-10-25 23:38:01 855

原创 Keil error: #101: “name“ has already been declared in the current scope解决方法

keil编译发生错误#include <stdio.h>#include <stdlib.h>... // 标头档#define Result_TIMOUT 3#define Result_INTIAL 0#define Result_ERROR 1... // 预处理typedef enum{ MD_INIT, HARDWARE_CHECK, F.

2021-10-25 16:17:09 4756 1

原创 网路是怎样连接的(九)TCP的性能优化(下)

网路是怎样连接的(九)TCP的性能优化(下)思考重点流量控制的原理以及实现目的?壅塞控制的原理以及实现目的?核心知识核心知识点流量控制流量控制的目的在上一篇中有提到,是为了防止接收方大量且无节制的接收封包,换言之就是避免接收方处理不及产生超负荷,或者漏接封包等,这些问题可能会触发接收方进行丢包处理,让本来就很严重的网路状况火上加油因此流量控制的重点在于接收方的处理能力。TCP会在头部提供视窗大小的栏位,接收方可以依照当前缓冲区内可用的记忆体来决定视窗大小。当应用程式向缓冲区拿取数据的速

2021-10-21 21:46:48 270

原创 网路是怎样连接的(八)TCP的性能优化(上)

网路是怎样连接的(八)TCP的性能优化(上)思考重点TCP具有那些性能优化机制?滑动窗口的特色?滑动窗口发生丢包怎麽办?核心知识核心知识点一系列的优化机制起初的TCP採用一问一答模式,也就是说发送方一定要等到接收方返回ACK消息才能进行下一个封包的发送,撇除逾时不说,在等待的过程中等于发送方什麽事也不能做,白白浪费了这一段时间。为了解决这个问题,发明了滑动视窗控制,使得在等待的过程中也可以持续发送封包消息,并且滑动视窗拥有比逾时重传更高效的高速重送机制,大大提升了效率问题实现滑动

2021-10-15 09:15:06 467

原创 网路是怎样连接的(七)TCP的交互(下)

网路是怎样连接的(七)TCP的交互(中)思考重点TCP如何确认对方收到消息?讯息收发中的头部消息变化?关闭连接操作?核心知识核心知识点封包的收发当使用connect()完成双方的通讯连接后,整个控制流程就会回到应用程式中,这时我们可以使用write()来发送消息,read()来读取消息。不过write()操作会由应用程式决定要写入多长的数据,而这些数据会透过协议栈存放在作业系统分配好的缓冲区当中,由TCP模块决定一次要发布多长的数据。同理read()操作也是向作业系统分配的特定缓冲区拿

2021-10-07 09:19:53 182

原创 网路是怎样连接的(六)TCP的交互(上)

网路是怎样连接的(六)TCP的交互(上)思考重点调用socket后协议栈内部发生什麽事?协议栈是如何看待套接字的?TCP如何发起连线?核心知识核心知识点双方沟通的控制消息协议栈在网路分层中的架构继上一章介绍了应用程式调用socket的连线流程后,我们将透过协议栈内部的TCP/UDP消息处理来探讨作业系统是如何使用socket消息进行连线以及通讯双方如何使用TCP头部控制消息来互相确认连线状态我们都知道应用程式会使用socket标识符代表一个本地端与服务端的沟通通道,当使用soc

2021-10-01 08:02:04 161

原创 网路是怎样连接的(五)Socket API

网路是怎样连接的(五)委託协议栈发送消息思考重点如何将应用程序消息委託给协议栈发送?socket是调用那些函式进行收发操作?核心知识委託协议栈收发重点协议栈如何进行收发操作现在将拥有的数据整理一下,首先HTTP消息封包已经由应用程式打包完成,服务器IP地址也已经透过DNS1请求机制获得。在两个前提条件都满足的状况下,我们就可以着手思考要怎麽将这些数据发给对方服务器的应用程式发送数据其实是调用多个socket库函式达成的,藉由委託多个函式API进行一连串的任务交互,每个任务完成的项目不同

2021-09-24 11:12:21 107

原创 网路是怎样连接的(四)DNS

网路是怎样连接的(四)DNS思考重点如何利用DNS协议查找相应的IP位置?服务器是怎麽存储那麽多相应的域名消息?DNS是使用TCP还是UDP协议为基础传输?核心知识DNS核心知识点为甚麽我们需要DNSDNS是一个与HTTP同样位于应用层的协议,它提供了域名转IP地址的解析服务1不过问题来了,既然电脑(计算机)可以同时拥有域名与IP地址,何不使用域名来表示?同理为何我们输入网址时不直接使用IP作为输入?IP太难记啦TCP/IP为了识别网路中的主机,会分配唯一的IP地址给主机,再依

2021-09-24 11:11:32 532

原创 网路是怎样连接的(三)浏览器与HTTP

网路是怎样连接的(三)浏览器与HTTP思考重点网页浏览器怎麽获取网站消息当我们输入网时会发生什麽事常见的404 not found意思核心知识 浏览器生成消息知识点 主要流程网页浏览器为了获取服务器上关于该网站的HTML文件,透过HTTP协议向服务器发起请求,不过我们在网页中是使用可以让人看得懂的域名地址,因此网页浏览器会调用socket库中关于获取DNS的函数,并把返回的IP地址与HTTP请求一併交给传输层,接下来作业系统会使用socket函数创建socket1、利用IP地址与Por

2021-09-24 11:10:26 200

原创 网路是怎样连接的(二) 网路分层架构

网路是怎样连接的(二) 网路分层架构1. 思考重点组织垂直分层的好处是什麽网路自上而下的流程与分层的关联2. 核心知识 网路分层架构知识点 3. 什麽是网路分层网路分层就是将整个複杂的网路系统专业分工,每个层次分别处理对应的工作项目,如同应用层专门处理与使用者相关的服务,但是却不会涉及到网路的连接部分,这种术业有专攻的工作模式不仅有效率还具备多种优势3.1. 为甚麽要使用网路分层,好处在哪3.1.1. 可替代性以改装车为例,假如我们想换头灯,只要把相应零件拆解下来,换上想要的零组件

2021-09-24 11:09:32 270

原创 网路是怎样连接的(一) 网路是甚麽

网路是怎样连接的(一) 网路是甚麽1. 思考重点网路是怎样连接起来的?网路可以解决甚麽问题?网路的本质是什麽?2. 核心知识 计算机网路概论核心知识点 3. 甚麽是网路3.1. 网路是一种多方交互的网状结构我们可以先想想Web(网)的定义是甚麽?人际关係网、交通网路、蜘蛛网?其实说穿了符合以下条件的就可以成为网状结构:拥有两个以上的成员,互相独立两个成员之间至少拥有一条对外联络道路成员之间均可以透过连络道路访问到彼此也就是网路的结构由Node(节点) 与 Link(链接)

2021-09-24 11:08:21 159

原创 浮点数的二进位表达方法

浮点数的二进位表达方法浮点运算知识点小数二进制表达与整数的二进制表达相同我们可以假设任意小数的二进制为 1011.0011也就是说,按照跟整数转换相同的思路我们可以换算出 1*2^(3) + 0*2^(2) + 1*2^(1) +1*2^(0) + 0*2^(-1) + 0*2^(-2) + 1*2^(-3) + 1*2^(4) = 11.1875不过像1011.0011这种表达式是给人看得,真正在计算机内传输,是运用更高效率的科学记号方式,更进一步说是运用了正则表达式与ECXESS系统,毕

2021-09-24 11:05:18 355

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除