動作環境
Ubuntu 18.04 LTS
Board: STM32L476 Nucleo_64 (hereafter STM32L476)
Zephyr 2.1.99
概要
- ボタンの押下処理を試した
samples/basic/button/
- User Button (PC13)が使われる
ボード
USER_PB : PC13
という定義がある。
サンプルプロジェクトの実行
$ west build -p auto -b nucleo_l476rg samples/basic/button/
$ west flash
$ west flash
(Note: west flashは一回だと失敗することがあるので二回実施)。
別のターミナルにて下記を実行する。
$ sudo screen /dev/ttyACM0 115200
User Button (青色のボンタ)押下のたびに下記の出力一行が追加される。
Button pressed at 1149016013
Button pressed at 1226942740
Button pressed at 1261369171
ボタンの定義
./boards/arm/nucleo_l476rg/nucleo_l476rg.dts
にてボタンの定義がされている。
gpio_keys {
compatible = "gpio-keys";
user_button: button {
label = "User";
gpios = <&gpioc 13 GPIO_INT_ACTIVE_LOW>;
};
};
west buildの後には./build/zephyr/include/generated/generated_dts_board.conf
が生成される。そこに定義が見つかる。
DT_GPIO_KEYS_BUTTON_GPIOS_CONTROLLER="GPIOC"
DT_ALIAS_SW0_GPIOS_CONTROLLER="GPIOC"
DT_GPIO_KEYS_SW0_GPIOS_CONTROLLER="GPIOC"
DT_GPIO_KEYS_BUTTON_GPIOS_PIN=13
DT_ALIAS_SW0_GPIOS_PIN=13
DT_GPIO_KEYS_SW0_GPIOS_PIN=13
...
これらの定義はsrc/main.cで使われている。