- 博客(8)
- 收藏
- 关注
原创 ADC_HandleTypeDef* adcHandle指向ADC_HandleTypeDef结构体的指针
它在 `HAL_ADC_MspDeInit` 函数中的作用是**反初始化ADC的底层硬件资源**(如时钟、引脚、中断等)。| **参数** | **作用** || **调用关系** | 由 `HAL_ADC_DeInit()` 自动触发,用于完全关闭ADC外设。此函数由 `HAL_ADC_DeInit()` 自动调用,**无需手动调用**。
2025-08-08 11:00:51
346
原创 C 语言实现泰勒级数计算正弦和余弦函数
item \textbf{周期处理}:利用 \(\sin(x+2k\pi) = \sin(x)\) 性质,将输入归一化到 \([0, 2\pi)\)本文详细解释使用C语言通过泰勒级数近似计算正弦(\(\sin(x)\))和余弦(\(\cos(x)\))函数的实现,精度控制在 \(10^{-6}\)。// 递推计算下一项: term_{n} = -term_{n-1} * x² / [(2n-1)(2n)]时间复杂度 & \(O(n)\),其中 \(n\) 取决于 \(x\) 大小 \\。
2025-08-07 16:37:50
372
原创 位反转使用 j = (j << 1) | ((i >> k) & 1);为什么?
【代码】位反转使用 j = (j << 1) | ((i >> k) & 1);为什么?
2025-08-07 11:10:43
179
原创 while (temp >>= 1) log2n++;
1. **复合赋值操作**:`temp >>= 1` 等价于 `temp = temp >> 1`(右移一位),并返回赋值后的 `temp` 值。- 当 `temp` 被右移至 **所有位均为 0** 时(即 `temp == 0`),条件判断为假,循环结束。- 第一次执行 `temp >>= 1` 后,`temp` 仍为 `0` → 条件为假,**循环体不执行**。- 第3次右移:`temp = 1`(二进制 `1`),非零 → 循环继续,`log2n++`。- 如果结果为 **0**,循环终止。
2025-08-07 10:07:45
127
原创 FFT.c
这个实现完全避免了数学库依赖,适用于嵌入式系统或对库依赖有限制的环境。下面是一个不使用标准数学库(math.h)的FFT实现,使用自定义的复数运算和泰勒级数近似计算三角函数:```c。- 输入信号为矩形波:前4个点为1.0+0.0i,后4个点为0.0+0.0i。- 使用泰勒级数展开实现`taylor_sin`和`taylor_cos`1. 输入长度必须是2的幂(如2, 4, 8, 16...)- 使用结构体`Complex`表示复数。- 内存使用高效(就地计算)- 精度控制在1e-6以内。
2025-08-06 21:20:21
236
原创 FFT代码中,精度0.0001弧度由什么决定
如需严格保证,可添加编译选项`-ffast-math`或使用专用数学库。- 标准库的`cos()`和`sin()`函数(如glibc或math.h实现)通常具有**高于0.0001弧度的计算精度**- 现代系统默认的`double`类型提供15-17位有效数字,足以满足0.0001弧度(≈10⁻⁴)精度需求。- 这确保了角度计算`2*PI*i/n`本身的误差远小于0.0001弧度。- 复数运算`c_mul()/c_plus()`使用浮点运算。- 使用标准的Cooley-Tukey蝶形运算结构。
2025-08-06 21:12:58
174
原创 指针和结构体;->和.用法
在 C/C++ 中,`Employee *ptr = &e1;` 这行代码的意思是:**创建一个指向 `e1` 的指针变量 `ptr`**。
2025-08-06 21:11:06
571
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅