【问题标题】:Embedded C GPIO Issue嵌入式 C GPIO 问题
【发布时间】:2014-02-03 21:19:27
【问题描述】:

由于我是初学者,我在编程时遇到了问题,我正在尝试读取一个方脉冲序列,该脉冲序列进入我的 PIC 微控制器的一个数字 GPIO 引脚。我必须“采样”然后存储输入信号,以便保存一堆 1 和 0(可能在数组中)。我必须保存我得到的 1 和 0 的数量(在 8、4 次以上的数据包中进行采样)并将 1 或 0 的数量计算为平均值。

任何人都知道我可以如何开始在 C 代码中完成此任务?

【问题讨论】:

  • 我的问题是我真的不知道我在做什么,甚至没有一个起点——如果我不得不说我有一些东西,那就是
  • 你至少可以写出你的想法,比如你可能想用什么数据结构来存储采样数据,你将如何用它计算平均值等等......你可以写一些伪代码还说你真的不太了解语法,无法将其翻译成 C

标签: c embedded


【解决方案1】:

我会把它分解成碎片。在循环中编写读取输入行的内容:

unsigned int input;

for (;;)  /* infinite loop */
{
   input = ReadInput();
   printf ("%d\n",input);
}

您必须为 ReadInput() 创建一些东西,希望您有一个可以遵循的示例。这将取决于您使用的确切 PIC 以及正在读取的输入行。

一旦你看到它正确读取输入行,然后添加一个 sleep() 函数以将其减慢到合理的值(你的采样率),将输入更改为数组 (input[x++] = ReadInput();),然后找出你想要的循环结束。但这会让你开始。

【讨论】:

    【解决方案2】:

    如果我这样做,我可能会设置 GPIO ISR 处理程序以在每次 GPIO 值更改时在 GPIO 引脚上获取中断,并有一个并行计数的计时器。然后,如果更改了 gpio 值,则会触发中断,您可以读取计时器并查看自上次 GPIO 更改以来经过了多长时间(然后您可以随意采样)。我认为这是最准确的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多