我需要每 5 毫秒读取一次 BBB 中的所有 7 个模拟引脚。我正在使用以下 C 代码执行此操作:
void main(){
char value_str[7];
long int value_int = 0;
FILE* f0 = fopen("/sys/bus/iio/devices/iio:device0/in_voltage0_raw", "r");
while(1){
fread(&value_str, 6, 6, f0);
value_int = strtol(value_str,NULL,0);
printf("0 %li\n", value_int);
fflush(stdout);
usleep(5000);
rewind(f0);
}
但是,cpu 使用率上升得非常高(20%)。有没有办法以不同的方式读取模拟输入,这样它就不会使用太多的 CPU?有人建议“DMA”,但我在这方面完全迷失了......
任何帮助将不胜感激。