我想通过编写程序来创建可以使用示波器查看的灵活信号形状。我使用数组来形成信号,例如{2048, 4026, 2048, 0},其中2048代表我要调整的平坦线,4026代表峰值,0代表谷值。我想灵活调整2048的值;例如,如果我输入 x=3,它应该输出 {2048, 4026, 2048, 2048, 2048, 0}。但是,我对如何使用 for 循环或 if 语句感到困惑,因为我想将值放在中间。我的代码需要帮助;请提供建议或可能的示例代码。
我想要的结果 这是我想要创建的内容的描述,这是我的代码。
像2048这样的代码是我想要灵活处理的部分。
#define NS 4
uint32_t Wave_LUT[NS] = {
2048,4026, 2048,0
};
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, Wave_LUT, 4, DAC_ALIGN_12B_R);
HAL_TIM_Base_Start(&htim4);
请帮助我,我真的无法再类比了。
您没有显示
NS
和x
如何相关。在此示例中,我假设 NS
始终足够大以容纳结果数组。
从你的例子中我得到了一些固定值。 你的数组布局总是这样的:
这意味着,数组中总共有
x+3
个元素,除了 2 个之外,所有元素都具有相同的值。
让我们填写以下值:
#include <stdio.h> // for perror
#include <stdlib.h> // for exit
#define NS 1000
uint32_t Wave_LUT[NS];
void Init_DAC_Array(size_t x)
{
if (x+3 > NS)
{
perror("x exceeds array size!");
exit(1);
}
for (size_t i = 0u; i < x+3u; i++)
{
Wave_LUT[i] = 2048u;
}
Wave_LUT[1] = 4026u;
Wave_LUT[x+2] = 0u;
}