从C到CPP的迁移
引入为什么会有这篇笔记面向过程和面向对象作用域
基本语法内的新特性引用在C语言中仅有值传递和地址传递,而C++除此之外还可以进行引用传递。
默认参数C语言中若要使用默认参数,仅能通过宏实现。
函数重载函数重载基本用法函数重载是为了提高函数名复用性或是使得函数兼容更多数据类型诞生的。它允许两个函数使用同样的名称,通过传入的参数不同来进行区分。C++编程中支持函数重载,而C不支持。
所谓传入的参数不同,可以是参数的类型不同,例如func(int a)和func(double a);也可以是参数的个数不同,例如func(int a)和func(int a, int b);还可以是顺序不同,例如func(int a, double b)和func(double b, int a)。
例如如下示例。下面两个函数,虽说它们的名字相同,但是由于一个参数类型是int,一个参数类型是double。在调用func函数时,若传入func(1),则调用第一个;若传入func(3.14),则调用第二个。
1234567void func(int a){ cout << a; ...
CH340X+ISP烧录使用指南
CH430X使用指南引脚
CH340X引脚如上图。其中:
UD+ & UD- : USB差分信号(CH340的USB收发器按USB2.0全内置设计,UD+和UD-引脚建议不要额外串接电阻)
RXD & TXD: 串口接收、发送信号
V3:用于CH340内部供电电路退耦,在3.3V时时连接VCC输入外部电源,在5V时固定串联0.1uF电容后接地。
VCC:电源输入,需外接0.1uF退耦电容
RTS#:(输出信号)Request To Send,用于告知接收端数据准备发送。
CTS#:(输入信号)Clear To Send,用于告知发送端 接收端已准备好接收 可以发送。
TNOW:(输出信号)串口正在发送的状态指示引脚,高电平表示正在发送。
DTR#:(输出信号)Data Terminal Ready,它用于告知接收端数据终端已经准备好进行通讯。
其中,引脚6可复用为TNOW或DTR模式:
如果为引脚6外接4.7KΩ下拉电阻到GND,那么将进入开源DTR增强模式,引脚6自动切换为开源驱动的DTR#,用于连接MCU的BOOT模式引脚,默认DTR#为不输出,被外部电阻保持 ...
嵌入式中常用串行通信
USART简介USART:Universal Synchronous Asynchronous Receiver Transmitter,通用同步异步收发器
UART:Universal Asynchronous Receiver Transmitte,通用异步收发器
USART算是UART的哥哥,比UART多一个同步通信特性。这两个都是串行通信协议。同步通信需要双方时钟频率一致,而异步通信无需时钟频率一致,通过设置固定的波特率+识别起始位和结束位来识别数据。其数字基带调制均使用NRZ(不归零)码。
UART和USART最大都只能和一个主机同时通信
波特率UART通信的波特率用于描述UART每秒传输的比特的速度(因为UART采用二进制信道Baud=bps),其单位为bps(bit per sec),常用的波特率有9600,115200等。以9600为例,每一个bit持续的Ts就是
T_s=\frac{1}{9600}\approx104.2us帧格式UART规定数据空闲时,总线为高电平。
UART的帧格式为
起始位:一个低电平信号,使用由高电平(空闲)朝低电平(起始位)跳变的边沿 ...
git常用命令
git常用命令以下内容中<参数>都表示输入参数,输入时不需要加<>
本地仓库相关在某一文件夹内初始化git1git init
把工作区文件添加至暂存区12git add <文件名 或 通配符>git add -u #将已跟踪的文件提交至暂存区
把暂存区文件提交至本地仓库123git commit -m "<对本次提交的描述>" #从暂存区提交git commit -am "<对本次提交的描述>" #将已跟踪的文件提交至暂存区和仓库git commit --amend -m "<对上次提交的描述修改>" #修改上次提交的描述,不加-m可进入vim编辑
查看当前仓库的状态(分支、文件、文件状态)1git status
回退版本 <输入参数>有:
—soft (保留工作区和暂存区仅回退版本)
—hard (回退版本、工作区、暂存区)
—mixed (回退功版本和暂存区,保留工作区)
1git reset <输入参数>
查看差 ...