teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/09/22 09:15

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -15,4 +15,21 @@
15
15
  #define delayMicroseconds(x) bcm2835_delayMicroseconds(x)
16
16
  #endif
17
17
  ```
18
- だそうです(1161行目付近)。なので、BCM2835_NO_DELAY_COMPATIBILITYを#define(あるいはコマンドラインで-D)してやればよいのではないでしょうか。
18
+ だそうです(1161行目付近)。なので、BCM2835_NO_DELAY_COMPATIBILITYを#define(あるいはコマンドラインで-D)してやればよいのではないでしょうか。
19
+
20
+ なお、ライブラリのヘッダを書き換えるというのはある意味最終手段で、お勧めできる対応ではありません。
21
+ 順当には、ソースの1行目(bcm2835.hをインクルードする前)に
22
+ `#define BCM2835_NO_DELAY_COMPATIBILITY`
23
+ を追記するか、コンパイル時のコマンド(gcc なんちゃら)に` -D BCM2835_NO_DELAY_COMPATIBILITY `をつけ加えてやるか、というあたりでしょうか。
24
+
25
+ ---
26
+ あるいは、
27
+ > wiringPi.hを使用している理由
28
+ pinMode()関数を使用し、SPI専用ピン以外のGPIOピンを指定して、digitalWrite()関数を使用してデータを送信したいため
29
+
30
+ それだけであるなら、bcm2835ライブラリにもGPIO制御命令は含まれているのですからそちらを使うのがスジのように思います。
31
+
32
+ pinMode()に相当するのは [bcm2835_gpio_fsel()関数](http://www.airspayce.com/mikem/bcm2835/group__gpio.html#gaf866b136c0a9fd4cca4065ce51eb4495)、
33
+ digitalWrite()に相当するのは [bcm2835_gpio_write()関数](http://www.airspayce.com/mikem/bcm2835/group__gpio.html#ga22f9b05d8edda3ef57cd58728e9c3baa) となるようです。bcm2835_gpio_set()やbcm2835_gpio_clr()も使えそうですね。
34
+
35
+ bcm2835ライブラリ自体(というかRaspberryPiは持ってはいるけどあまりいじっていない)自分では使っていないので確認はしていませんが。