问题标签 [fmodf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
119 浏览

c - fmodf() 是否会导致 stm32 出现硬故障?

我正在尝试用 2 个正弦波创建调制波形。为此,我需要模(fmodf)来知道具有特定频率(lo_frequency)的正弦在那个时间(t)的幅度。但是当执行以下行时,我遇到了一个硬故障:

你知道为什么这给了我一个硬故障吗?

编辑1:

我用 my_fmodf 交换了 fmodf:

但是仍然发生硬故障,当我调试它时,它甚至没有跳转到这个函数(my_fmodf)。

这是发生此错误的整个函数:

编辑2:

我修复了警告:函数以“chux - Reinstate Monica”建议的方式返回局部变量 [-Wreturn-local-addr] 的地址。

但现在我在这条线上遇到了硬故障:

编辑 3:

因为之前的代码包含一个非常大的缓冲区阵列,不适合 STM32F303K8 的 16KB SRAM,我需要对其进行更改。

现在我使用一个“乒乓”缓冲区,其中我使用 DMA 的回调进行“前半传输”和“完全传输”:

它按我想要的方式工作: 输出

但是创建的正弦频率太低了。我的上限在 20kHz 左右,但我需要 40kHz。我已经将时钟增加了 8 倍,以使时钟达到最大值: 最大化. 我仍然可以减少计数器周期(目前是 50),但是当我这样做时,中断回调似乎需要比下一个周期更长的时间。至少看起来如此,因为当我这样做时输出变得非常失真。

我还尝试通过只取每 8 个正弦值来降低精度,但我不能再这样做了,因为这样输出看起来不再像正弦波了。

有什么想法可以优化回调以减少时间吗?还有其他想法吗?

0 投票
5 回答
179 浏览

c - 我可以将 NULL 传递给 modf/modff 吗?

modf()函数族都带有一个指针参数:

用于返回其输入的整数部分arg(小数部分是实际返回值)。

如果我只需要小数部分,我可以通过传递“跳过”积分部分的计算NULL吗?

我喜欢的 cppreference 页面都没有,也没有说明传递forman modff时会发生什么,而其他一些标准库函数将 NULL 作为“忽略此参数”的指示。NULLiptr

0 投票
1 回答
96 浏览

c++ - C++11 标准在哪里声明了 std::fmodf?

根据cppref page,在 C++11 中将 std::fmodf 添加到 cmath 。这怎么可能,因为这不意味着 cmath 会破坏与 C++11 之前的 math.h 的兼容性吗?我找不到任何说 std::fmodf 是在 C++11 中添加的引用,并且想知道这是在哪里说明的。

谢谢

0 投票
2 回答
80 浏览

c - 这是在 C 中执行此操作的正确方法吗?

我应该更改书面代码中的某些内容吗?编译器说一切都是正确的——没有错误或警告。

  • 您正在建造一个新家,并且您已经准确计算了地基所需的水泥量。
  • 理想情况下,您想购买确切数量的水泥,但商店只出售 120 磅袋装的水泥。
  • 这些袋子每个售价 45 美元。

请编写一个 C 程序,计算您为建造地基而必须购买的水泥成本。

  • 您的程序应首先读取一个十进制数字,该数字表示新家地基所需的水泥量(以磅为单位)。
  • 然后,您的程序应该显示您必须购买的水泥袋的总成本,以便有足够的水泥来建造您的地基。
  • 为了使您的程序更简单,您可以保证所需的水泥量永远不会是 120 的倍数。

到目前为止我的代码: