微波技术
第二章 传输线理论 微波的频率范围:3GHz~300GHz 传输线方程(电报方程) {dV(z)dz=−Z⋅I(z)dI(z)∂z=−Y⋅V(z)\begin{cases} \frac{dV(z)}{dz}=-Z\cdot I(z) \\ \\ \frac{dI(z)}{\partial z}=-Y\cdot V(z) & \end{cases} ⎩⎨⎧dzdV(z)=−Z⋅I(z)∂zdI(z)=−Y⋅V(z) 特性阻抗 Z0=R+jωLγ=R+jωLG+jωC=V0+I0+=−V0−I0−Z_{0}=\frac{R+j\omega L}{\gamma}=\sqrt{\frac{R+j\omega L}{G+j\omega...
天线原理
第二章 天线的特性参数 天线对于传输线系统来说,可以等效为负载阻抗 ZLZ_LZL 反射系数 ΓL=V−V+=ZL−Z0ZL+Z0\displaystyle{\Gamma_L=\frac{V^{-}}{V^{+}}=\frac{Z_{L}-Z_{0}}{Z_{L}+Z_{0}}}ΓL=V+V−=ZL+Z0ZL−Z0 电压驻波比 VSWR=VmaxVmin=1+∣ΓL∣1−∣ΓL∣\displaystyle{\mathrm{VSWR}=\frac{V_{\max}}{V_{\min}}=\frac{1+\left|\Gamma_{L}\right|}{1-\left|\Gamma_{L}\right|}}VSWR=VminVmax=1−∣ΓL∣1+∣ΓL∣ 天线接收的功率 Paccept=Pinput(1−∣ΓL∣2)P_{accept}=P_{input}(1-|\Gamma_{L}|^{2}) Paccept=Pinput(1−∣ΓL∣2) 阻抗带宽...
STM32H7 DMA与ld文件
最近把项目构建工具链由STM32CubeIDE换成了CMake,在测试过程中发现原先的LCD代码无法使用,经过排查后发现是SPI3的DMA传输出了问题,下面是问题的解决过程。 我将CubeMX生成的两种工具链的代码进行了比对,发现CubeMX和CMake项目下的ld链接文件有所不同 在CubeIDE项目下,STM32H723的内存分配如下: 12345678910111213141516/* Highest address of the user mode stack */_estack = ORIGIN(RAM_D1) + LENGTH(RAM_D1); /* end of RAM *//* Generate a link error if heap and stack don't fit into RAM */_Min_Heap_Size = 0x200; /* required amount of heap */_Min_Stack_Size = 0x400; /* required amount of stack *//*...
STM32 CMake
本文已过时,STM32CubeMX已官方支持CMake,最新配置模板请参考本人仓库 NianLee0/stm32-cmake-template: stm32 cmake...
RTT使用方法
简介 Real Timer Transfer(RTT)是SEGGER公司开发的一种嵌入式调试手段,可以通过swd接口的调试器输入输出日志,对比常见的串口调试和SWO调试,RTT有如下优点: 只需SWD调试线就可以完成信息传输,无需另接SWO,串口线 RTT为非侵入式传输,对比串口输出,RTT不会影响当前程序进程 RTT传输速度快,效率高 关于RTT的详细介绍可以参考官方Wiki RTT原理 RTT的主要交互部分为Control Block(CB)该部分由ID、上行缓冲区、下行缓冲区组成,ID为CB标识,用于调试器找到目标地址。 RTT工作时将需要传输的数据存入缓冲区,调试器会自动读取缓冲区内容将其传输到电脑 RTT使用方法 安装JLink获取RTT库 RTT库在安装目录C:\Program Files (x86)\SEGGER\JLink\Samples\RTT可以找到,将RTT文件夹添加到项目中即可 2....
开发环境
本文已过时,建议使用CMake开发 开发环境 使用keil开发 使用keil开发时注意选择AC5编译器进行编译,不要使用AC6,在最新版keil中安装不再预装AC5编译器,需要手动安装,具体可参考这篇文章 使用vscode开发 安装keil,并安装AC5编译器 vscode下载eide插件 导入项目,选择从MDK导入,文件为keil项目文件 workspace不要与keil共存于同一目录,选择项目主文件夹,也就是2024-RMUL-XTYF-RobotFirmware这个文件夹 打开项目设置,填入编译器地址,AC5为ARMCC文件夹,AC6为ARMCLANG文件夹 点击实用工具,选择安装cppcheck和openocd,其他工具选装 构建配置选择AC5 选择芯片,打开芯片支持包,选择from...
RoboMaster C板硬件介绍
硬件介绍 官网介绍: RoboMaster开发板 C 型 原理图: 下载 用户手册: 下载 使用说明: 下载 Robomaster C型开发板使用STM32F407IGHx主控,板载12MHz外部晶振,最大倍频至168MHz,额定12V输入 电源如图: 板载UART1丝印对应芯片UART6,PG14对应TX,PG9对应RX 板载UART2丝印对应芯片UART1,PA9对应TX,PB7对应RX 线序如图: 开发板可挂载两路CAN总线,线序如图: 板载可配置IO口为一个IIC和一个SPI IIC为芯片IIC2,SDA为PF0,SCL为PF1 SPI为芯片SPI2,CS为PB12,CLK为PB13,MISO为PB14,MOSI为PB15 线序如图: 板载PWM接口对应芯片引脚如图:
指针
指针和指针类型 32位 123456789101112int main(){ printf("%d\n", sizeof(int*)); //4 printf("%d\n", sizeof(char*)); //4 printf("%d\n", sizeof(short*)); //4 printf("%d\n", sizeof(double*)); //4 return 0;} 1234567int main(){ int a = 0x11223344; char* pa = &a; *pa = 0; return 0;} 指针类型决定了在进行解引用操作的时候,能够访问空间的大小 int* p; p能够访问4个字节char p; p能够访问1个字节double p; *p能够访问8个字节 123456789101112131415int main(){ int a =...
预处理
程序的翻译环境和运行环境 从.c -> .exe翻译环境 翻译分为编译(编译器)和链接(链接器)两个过程 每个源文件都会经过编译器的 单独处理 生成目标文件(.obj文件object) 所有目标文件和链接库经过链接器生成可执行文件 链接器可以搜索所需的标准C库文件和个人的程序库 编译分为预编译,编译,汇编三个过程 以下在Linux下演示 创建test.c 预编译: gcc -E预编译命令 gcc -E test.c > test.i将预编译产生的内容重定向到test.i中 Linux中头文件存放在/usr/include中 预编译过程中: 头文件展开 去除注释(使用空格替换注释) 完成预处理指令,例如对#define定义的值进行替换 例如: 12345678#define MAX 100int main(void){ int i = MAX; return 0;} 替换为: 123456int main(void){ int i = 100; return 0;} 总结:文本操作 编译: gcc -S...
数据的存储
数据类型 32位 内置类型 char 1个字节 short 2个字节 int 4个字节 long 8个字节 float 4个字节 double 8个字节 整型家族: char * unsigned char 0 ~ 255 * signed char -128 ~ 127 short * unsigned short (int) * signed short (int) int unsigned int * signed int long * unsigned long (int) * signed long (int) 浮点型家族 float double 构造类型 数组类型 结构体类型 struct 枚举类型 enum 联合类型 union 指针类型 int* char* float* ...