分类: 参考

10 篇文章

嵌入式C/C++技巧——嵌入式厂商对 C/C++ 的支持
C/C++有若干个版本,每个版本通常会引入或删除一些特性,嵌入式常用编译器通常至少支持C99/C++11,因此本教程低于或等于此版本的特性将不再标注版本,并且通常支持C11和C++17,因此本教程涉及的内容均以该标准为准。通常编译器不会实现标准的所有功能,因此是否实现了特定功能需要以手册为准。 编译器编译器版本支持的C版本支持的C++版本参考Arm Compiler for Embedded 66.22ISO C89, C99, C11(实际也支持GUN C90, C99, C11)ISO C+…
嵌入式C/C++技巧——目录
前言 第一章 C与C++ 从C到C++ 嵌入式厂商对C/C++的支持 C/C++不完全兼容 C++简单入门 变量与字面量 枚举 结构体、位域与联合体 初始化 预处理器 替换文本宏与有条件编译 包含其他文件 其他(错误或警告、由实现定义的行为) 弱函数 内联函数 变参数函数 类型转换 强制类型转换 隐式类型转换 C++标准库 array——数组的替代品 C/C++混合编译
嵌入式C/C++技巧——预处理器(包含其他文件)
包含其他文件(#include) #include用于将其他文件包含到当前这一行,即将此行替换为这个文件的全部内容,文件名使用尖括号<>或双引号""包裹,使用尖括号<>只会在标准库中查找,使用双引号""会优先查找源文件同级目录中的文件,若找不到则会按顺序查找包含路径中的文件,若依旧找不到文件时会回退到标准库中查找,一旦找到对应文件则停止查找。 例如在bsp.c中使用#include "bsp.h",则会首先在bsp.c所在的文件夹中进行查找,若没有找到则在包含路径中进行查…
常见随机变量分布
一维离散型随机变量分布 名称 表示 定义 均值 方差 意义 0-1分布 X ∼ B ( 1 , p ) P { X = 1 } = p P { X = 0 } = 1 − p p p ( 1 − p ) 一重伯努利实验成功次数 二项分布 X ∼ B ( n , p ) P { X = k } = C n k p k ( 1 − p ) n − k n p n p ( 1 − p ) 𝑛重伯努利实验成功次数 泊松分布 X ∼ P ( λ ) P { X = k } = λ k k ! e − λ …
I²C(Inter-Integrated Circuit)要点
引子 集成电路总线(Inter-Integrated Circuit,IIC)是一种常用于单片机的同步串行通信接口规范,常见使用 I²C 的外设有EEPROM、传感器(如MPU9250中的磁力计)、时钟芯片(如DS3231)、低速ADC/ADC。相较于SPI,IIC通常速率更慢且电路更复杂,但所需接线更少。 I²C I²C一般有两条信号线:SDA(serial data line)和SCL(serial clock line)分别用于传输数据和时钟信号。一般两条数据线都需要外接上拉电阻,同时引脚…
SPI(Serial Peripheral Interface Bus)要点
引子 串行外设接口(Serial Peripheral Interface Bus,SPI)是一种常用于单片机的同步串行通信接口规范,常见使用SPI的外设有Flash(如W25Qxx)、传感器(如MPU9250)、LCD。相较于IIC,SPI通信速率通常更快(IIC常见的快速模式即400kbit/s,而SPI的通信速率取决于器件),并且推挽输出能够使得SPI拥有更高的传输速率(IIC为开漏输出,线路更复杂),但线路通常更多(IIC通常仅需SCL、SDA,双工下三线SPI需要SCK、MOSI、MI…
(复)频域变换
(复)频域变换定义 正变换 逆变换 傅里叶级数 a k = 1 T ∫ T f ( t ) e − j k ω 0 t d t f ( t ) = ∑ k = − ∞ ∞ a k e j k ω 0 t 傅里叶级数的帕斯瓦关系 1 T ∫ T | f ( t ) | 2 d t = ∑ k = − ∞ ∞ | a k | 2 傅里叶变换 F ( ω ) = ∫ − x ∞ f ( t ) e − j ω t d t f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e j ω t …
三角函数
基本公式 恒等式 sin 2 α + cos 2 α = 1 tan 2 α + 1 = sec 2 α arctan α + arctan 1 α = π 2 cosh 2 α − sinh 2 α = 1 cot 2 α + 1 = csc 2 α arcsin α + arccos α = π 2 加(减)法、半(倍)角、万能公式(正切半角公式) 加法公式 sin ( α + β ) = sin α ⋅ cos β + cos α ⋅ sin β cos ( α + β ) = cos α…
常见微积分与泰勒展开
泰勒展开 函数泰勒展开收敛域 ln ( 1 + x ) ∑ n = 1 ∞ ( − 1 ) n + 1 n x n x − x 2 2 + x 3 3 − ⋯ + ( − 1 ) n + 1 n x n + ⋯ ( − 1 , 1 ] ln ( 1 − x ) ∑ n = 1 ∞ − x n n − x − x 2 2 − x 3 3 − ⋯ − x n n − ⋯ [ − 1 , 1 ) 1 1 + x ∑ n = 0 ∞ ( − 1 ) n x n 1 − x + x 2 − ⋯ + ( −…
美国信息交换标准代码(ASCII)与转义序列(C/C++)表
美国信息交换标准代码(ASCII) 美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)等同于国际标准ISO/IEC 646。 转义序列 (C/C++)转义序列是用来在字符串字面值中定义某些特殊字符。 转义序列描述表示简单转义序列(见ASCII表)数值转义序列\nnn任意八进制值代码单元 nnn(1~3 位八进制数位)\o{n...} (C++23 起)代码单元 n...(任意位数的…