Questions tagged «c»

有关在Raspberry Pi上编译C程序的问题。

2
内存映射的I / O寻址如何工作?
内存映射的I / O寻址如何工作? 我试图了解提供的I2S示例:有人让它运行吗?。 配置时钟: #define BCM2708_PERI_BASE 0x20000000 #define CLOCK_BASE (BCM2708_PERI_BASE + 0x101000) /* Clocks */ 它首先像这样映射代码... clk_map = (unsigned char *)mmap( (caddr_t)clk_mem, MAP_BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, mem_fd, CLOCK_BASE ); 然后它会做某事... // Always use volatile pointer! clk = (volatile unsigned *)clk_map; 当引用它时,会有0x26和0x27的这些奇怪的加法,那是什么意思? printf("Disabling I2S clock\n"); *(clk+0x26) = 0x5A000000; *(clk+0x27) = 0x5A000000; …
29 memory  c 

1
如何检测到我正在为Raspberry Pi进行编译?
由于Raspberry Pi需要一些特殊的代码(我正在谈论C/C++)来访问某些硬件功能(例如的调用bcm_host_init())。我正在寻找一种可靠且优雅的方法来自动检测到此情况。我认为没有#defines像_WIN32我这样会滥用的编译器,因此从CMake(可以执行Shell脚本)对其进行检测就足够了。我也希望该方法在大多数发行版中都可以使用。 我能想到的一个办法是,我可以找如/opt/vc/include/bcm_host.h文件(这并不困难),并检查该架构是ARM(这是很容易在编译的时候,因为有#define该宏,如__arm__中__ARMEL__)。当您在另一台计算机上具有交叉编译环境但当前尚未交叉编译时,此额外的arch检查是为了防止错误肯定。有没有比这更好的方法呢?


5
用C为Raspberry Pi编写操作系统
我已经找到了Baking Pi教程,但是它们仅使用汇编语言。我遵循了第一课,但是我已经想知道如何使用C了。我的意思是,他们发明高级语言是有原因的。我尝试将C代码编译为一个object(.o)文件,然后进行编译 .section .init .globl _start _start: bl main loop$: b loop$ 到另一个目标文件并将它们链接在一起从而获得kernel.img。然后,我用自己的内核替换了已经存在的内核,但是它不执行C代码。我编写的C代码应该只打开OK LED,然后返回(然后来loop$: b loop$)。但是“ OK” LED随机闪烁几次,然后一直保持熄灭状态。这是我的C代码: int main(int argc, char ** argv) { volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000; *(gpioAddr + 4) = 1 << 18; *(gpioAddr + 40) = 1 << 16; return 0; } 如何在Raspberry …


3
按钮触发太多事件
我正在编写一个将信息写入LCD显示器的mp3播放器,我想将其从使用键盘转换为使用按钮,但是我一直在获得太多按键。我已经尝试过拉升和下降/上升边缘,但仍然得到相同的结果。有人知道这是一个已知问题,还是我做错了什么?哦,我也正在使用connectionPi在C中完全这样做。
12 c 

2
使用C获取PI的温度
我知道您可以使用工具vcgencmd来获取温度,但是我想知道是否可以在C中使用任何API来以编程方式获取温度,而无需阅读vcgencmd的标准输出?
11 c  temperature 

2
用开关打开和关闭LED
我正在尝试编写代码,以使LED在关闭时点亮,并在打开时使用触觉按钮开关关闭。我已经写好了connectionPicture库中正确的代码,但是我只能在关闭时打开它,然后再关闭它。在极少数情况下,在多次按下此键后,当我按下按钮时,LED会熄灭,但是我确定那不是应该的。 #include <wiringPi.h> int main (void) { wiringPiSetup (); pinMode (0, OUTPUT); pinMode (1, INPUT); digitalWrite (0, LOW); for(;;) { if(digitalRead (1) == LOW) { if(digitalRead (0) == HIGH) digitalWrite (0, LOW); else if(digitalRead (0) == LOW) digitalWrite (0, HIGH); } } return 0; } 我已经附上了电路接线图。
10 c 

2
如何使用Java从标头引脚读/写数据?
我只是在Raspberry Pi上运行Java,这比我希望的花费了很多时间。我希望能够从Java的标头针中读取数据/从中读取数据。我怎样才能做到这一点?我是否需要先使用C编写驱动程序或某种驱动程序才能从插头引脚中获取数据?我正在运行Soft-float Debian“ wheezy”的实例。在Java中甚至可以做到这一点吗?是否有我应该知道的解决方法?
9 gpio  linux  java  c 

2
用于C的GPIO库
我想利用我的Raspberry Pi 2上的GPIO引脚,但是由于我个人不喜欢该语言,所以我不希望使用Python。但是,我似乎找不到关于C的使用的任何信息,只有Python。 有官方的C API吗?如果是这样,我在哪里可以找到教程?如果没有,我有什么选择?
8 gpio  pi-2  c  tutorial 

1
使用C读取GPIO状态
我已经实现了此示例,以熟悉C中的基本GPIO编程。该代码演示了如何写入GPIO引脚,但未明确说明如何读取引脚的状态。我怀疑WiringPi最终将是一个更好的解决方案,因为我最终希望读取输出引脚的状态,但是与此同时,我想通过Dom和Gert的代码完成我的跋涉。那我怎么能读一个引脚的值呢?
8 gpio  c 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.