摘自: https://subingwen.cn/cmake/CMake-primer/#2-6-3-%E6%80%BB%E7%BB%93来源: 爱编程的大丙
视频教程:哔哩哔哩_bilibili
官方文档:cmake-commands(7) — CMake 4.0.2 Documentation
CMake概述CMake 是一个跨平台的项目构建工具。关于项目构建还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写makefile,就会发现,makefile 通常依赖于当前的编译平台,而且编写makefile 的工作量比较大,解决依赖关系时也容易出错。
而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,再根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可,所以可以把CMake看成一款自动生成 Makefile的工具,其编译流程如下图:
蓝色虚线为makefile构建项目的过程
红 ...
电源转换芯片板子上一般使用的电源就是两类:DCDC(直流-直流变换器),LDO(低压差线性稳压器)
**对电源选择原则上:**大功率电源使用DCDC,因为转换效率很高。而LDO一般使用于小功率电源,电源质量,纹波要求等
线性稳压器LDO
名称:线性稳压器,简称LDO,即Low Dropout Regulator
功能:将较高的输入电压转换为较低且稳定的输出电压(这就是稳压的定义)。LDO的特点是低压差,且只能降压,且即使输入电压与输出电压接近时仍然能够稳定工作。
LDO电源的优缺点(记住纹波小,效率低)
优点:
1.LDO成本低,外围电路少,通常只需要一两个旁路电容
2.LDO负载响应快,输出纹波小,噪声小
缺点:
1.效率低(较大热损失),输入输出压差不能太大(几V左右)
2.LDO只能降压
3.LDO输出电流较低,最高可能就只有几A(1~2A左右),输出功率做不大(同比DC-DC)
应用:适用于低功耗/小功率系统、低纹波、较低噪声的系统,如无线通信设备、音频设备等。
常用LDO芯片:
**AMS1117芯片:**比较经典的芯片,低功耗,常用于5V到3.3
我们的电脑US ...
电容的介绍常见电容的作用:
主要用于电源滤波、信号滤波、信号耦合、谐振、滤波、补偿、充放电、储能、旁路、隔直等电路中。
电容价格:
通常是电容的容值越高,价格越贵,大电容比小电容成本更高
具体硬件相关知识见下面几篇文章
电容在电路设计中的应用-CSDN博客
【硬件电路知识】深度剖析去耦、旁路、滤波电容_去耦电容-CSDN博客
一文搞懂0.1UF和10UF电容并联使用技巧-CSDN博客
视频:
0.1uF和0.01uF两个电容并联就成了旁路电容和去耦电容?_哔哩哔哩_bilibili
去耦电容与旁路电容为什么需要去耦电容?
一个电路,从供电和用电的角度来看,可以分为2部分:电源和负载。负载一般需要纯净稳定的直流电,即不管负载电流如何变化,电源的电压波形应该是一条直线。这一点,几乎所有的电源都做不到,原因有很多:
电源有内阻,负载电流变化时,电源电压也跟着变。
电源可能带好多个负载(比如多个芯片),某个芯片的电流变化会导致电源电压跟着变化,从而再导致其他芯片的电压发生变化。
一些电子电源本身有较大的波纹,不是纯净的直流电。
各种电磁干扰窜入电路后,导致电源波动。
如上各种原因产生的 ...
USB介绍USB概念
单端信号与差分信号单端信号:
差分信号:
接收到的信号是两个信号线的电平差
差分信号的好处
**差分信号的抗干扰能力强。**因为两根差分走线之间的耦合很好,当外界存在噪声干扰时,几乎是同时被耦合到两条线上(两信号电压都变化,但是差值还是不变),而接收端只是关心两信号的差值,所以外界的共模噪声可以被完全抵消。
PCB设计差分线绘制
优先绘制差分线
差分线尽量短,避免受到一些干扰及信号的衰减
差分线上不要超过两对过孔
平行紧密走线,避免直角锐角走线
长度差尽量小(控制在5mil以内),尽量保证差分线等长!!!
与其他信号网络以及地的距离尽量在20mil以上(避免和其他信号发生相互干扰)
注意阻抗匹配(90欧姆差分阻抗)
对于阻抗匹配问题,对于高速信号非常的重要,是PCB设计中非常重要的一环,可以使用嘉立创阻抗设计神器进行阻抗设计
USB接口TYPE-AUSB Type-A又可称为USB-A
TYPE-BTYPE-CUSB TypeC 拥有诸多优点:双面可插不担心正反、可做USB/雷电高速传输载体,支持 PD快充、音频设备 ...
嵌入式硬件
未读一些PCB Layout时的经验:
所有走线一定要确保经过了电容再进入模块,避免不起作用
升压模块电路下方(电感)不允许走线,避免受到干扰影响系统工作。我们设置一个禁止铺铜区域
电源线要走大电流的时候一个过孔到底层是不够的,我们可以多放置几个过孔(6~8个过孔即可)到地,这样电流大一些
布线顺序:
布线的顺序,一般根据实际情况,先布置电源或难度高的线,然后再布常规线,地线最后通过铺铜过孔连接。
走线的时候,尽量满足顶层走竖线,底层走横线,可以保证顶层和底层都能走线而不被阻挡
嵌入式软件
未读keil配置与芯片包下载固件库文件以F103固件库为例:
STM32F10x_StdPeriph_Lib_V3.5.0固件库是为STM32F1系列微控制器设计的开发辅助库,主要用于简化对STM32F1外设的控制和配置。该库封装了对各类外设(如GPIO、ADC、USART、SPI、I2C等)的控制接口,使开发者无需直接操作复杂的寄存器就能使用这些硬件外设。通过它,开发者可以轻松地进行外设的初始化、配置和数据处理。
主要结构:
_htmresc:图片没什么用
Libraries:库函数的文件,我们之后建工程时会用
CMSIS:包含Cortex-Mx内核的相关定义和启动代码。
CoreSupport:包含了与Cortex-M系列内核相关的文件,主要是一些适用于ARM Cortex-M内核的通用代码和数据结构,用于管理核心处理器功能。
DeviceSupport:含与特定厂商的微控制器设备相关的文件,特别是该设备特定的外设寄存器定义和访问方法。它提供了Cortex-M内核之外的硬件支持,适用于具体的MCU型号。
STM32F10x_StdPeriph_Driver:标准外设驱动库,包含S ...
C++学习笔记:名称空间std
<math.h>新式为
<string.h>新式为
如果使用iostream,而不是iostream.h,即当头文件中没有扩展名h时,iostream中定义的用于输出的cout变量实际是std::cout,而endl实际上是std::endl.因此,可以省略编译指令using,用下述方式进行编码:
std::cout<<” xxxxxx”;
std::cout<<std::endl;
但如果使用using编译指令:using namespace std;
便可以直接使用cin和cout…,而不必加上std::前缀
控制符endl
C++中的旧版换行采用的是”\n
cin和cout(1).
(2).
输出可以拼接:
**
每次读取一行字符串(string)输入
总结:1.cin(>>)
虽然可以使用 cin 和 >> 来输入字符串,当 cin 读取数据时,一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。
可以输入 “Mark” 或 “Twain” ...
类型转换运算符C++中,类型转换运算符允许你在不同类型之间执行转换。这些运算符允许你显式地将一个类型转换为另一个类型。C++中有四种类型转换运算符:
static_cast用途: 主要用于进行静态类型转换,例如将指针或引用从一种类型转换为另一种类型,但在转换时没有运行时检查。
示例:
12double doubleValue = 3.14;int intValue = static_cast<int>(doubleValue);
dynamic_cast
用途: 主要用于进行安全的动态类型转换,只能在指针或引用之间转换,通常在基类指针或引用和派生类之间进行类型转换。在运行时,dynamic_cast会检查转换的合法性,成功转换返回新指针,否则返回空指针。
示例:
123456789101112Base* basePtr = new Derived /* 指向派生类对象的基类指针 */;Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);if (derivedPtr) { // 转换 ...
Clion配置Qt工具链CLion配置qt环境-CSDN
Clion配置外部工具配置外部工具Qt Creator和UIC等
在Clion的设置中打开外部工具
名称填QT Creator
123456工具设置: 程序: qtcreator.exe的根路径 实参: $FileName$ 工作目录: $FileDir$其他外部工具同理
可通过Qt creator外部工具打开.ui文件实现拖动部件设计UI,在Clion直接编译会自动将.ui文件转化为C++对应的头文件,不需要UIC转换
分块查找配置 Qt creator写Qt有两种方法:
直接在Qt creator 中创建项目,Build system选择qmake,Kits选择Qt minGW 64-bit/32-bit即可开始
将Clion与Qt creator联合使用来写Qt,下面介绍如何配置
为了使Clion和Qt creator 同时使用来完成UI的设计
首先需要在Qt中先创建项目选择Qt Widgets Application,取名并选择路径
在Build System 中选择Cmake
在C ...