mcpField
G
gpio-baremetal

gpio-baremetal

github.com/mohitmishra786開発269306 回インストール18 週間前に更新
リポジトリ

gpio-baremetal について

gpio-baremetalは、HALを使わないGPIO設定を案内するガイドです。ピンモード、代替機能、プル抵抗、割り込みを扱い、STM32、nRF52、ESP32の例を含みます。

主な機能

  1. 01入力と出力の設定
  2. 02代替機能のピン割り当て
  3. 03プルアップとプルダウンの設定
  4. 04ピン変化割り込みの設定
  5. 05STM32、nRF52、ESP32の例

活用シーン

  1. 01LEDの点灯やボタン入力
  2. 02USARTまたはSPIへのピン割り当て
  3. 03エッジトリガーのEXTI割り込み設定
  4. 04ベンダー間でのGPIOコード移植

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill gpio-baremetal

インストール後、Claude Code で/gpio-baremetalを入力して読み込まれたか確認します。

詳細

GPIO(ベアメタル)

目的

HAL を使わずに GPIO を設定して使用します。入力/出力モード、代替機能のマッピング、プルアップ/プルダウン、速度/スルーレート、LED、ボタン、周辺機器のピンマルチプレクサー向けのピン変化割り込みを扱います。

使用する場面

  • UART/SPI を起動する前に LED を点滅させたり、ボタンの状態を読み取ったりする
  • ピンを USART/SPI の代替機能に割り当てる
  • ピンのエッジで EXTI ライン割り込みを発生させる
  • ベンダー間で GPIO コードを移植する

ワークフロー

1. STM32 の GPIO パターン
/* Enable GPIOA clock */
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;

/* PA5 output — MODER[11:10] = 01 */
GPIOA->MODER &= ~(3U << (5 * 2));
GPIOA->MODER |=  (1U << (5 * 2));

/* Toggle via BSRR — atomic set/reset */
GPIOA->BSRR = (1U << 5);       /* set */
GPIOA->BSRR = (1U << (5+16));  /* reset */

代替機能(例:PA2 の USART2 TX):

GPIOA->MODER &= ~(3U << (2*2));
GPIOA->MODER |=  (2U << (2*2));           /* AF mode */
GPIOA->AFR[0] &= ~(0xFU << (2*4));
GPIOA->AFR[0] |=  (7U << (2*4));          /* AF7 = USART2 */
2. プルアップ付き入力
/* PC13 input, pull-up */
GPIOC->MODER &= ~(3U << (13*2));          /* input mode 00 */
GPIOC->PUPDR &= ~(3U << (13*2));
GPIOC->PUPDR |=  (1U << (13*2));          /* pull-up */

int pressed = !(GPIOC->IDR & (1U << 13)); /* active low */
3. EXTI 割り込み(STM32)
/* SYSCFG: map EXTI13 to PC13 */
SYSCFG->EXTICR[3] = (SYSCFG->EXTICR[3] & ~0xFU) | 0x2;  /* port C */
EXTI->IMR  |= (1U << 13);
EXTI->FTSR |= (1U << 13);  /* falling edge */
NVIC_EnableIRQ(EXTI15_10_IRQn);

ISR:EXTI->PR を確認し、1 の書き込みでクリアします。

4. nRF52/ESP32 に関する注意事項
プラットフォームパターン
nRF52NRF_P0->PIN_CNF[n] — 方向、プル、ドライブ
ESP32GPIO.out_w1ts、GPIO.enable;機能には IO_MUX を使用

ピンを設定する前に、必ず周辺機器のクロック/電源ドメインを有効にしてください。

5. エージェントの使用方法
/gpio-baremetal Configure PA2 as USART2 TX alternate function on STM32F4

よくある問題

症状原因対処方法
ピンの状態が固定されるMODER の設定が誤っている/AF ではないRM のピンテーブルを再確認する
EXTI が連続発生するデバウンスがない/入力がフローティング状態プルを有効にし、ソフトウェアでデバウンスする
AF の不一致AFR のニブルが誤っているRM のピンごとの AF テーブルを確認する
トグルが見えないポートビットが誤っている/LED がアクティブ Low回路図を確認する

関連スキル

  • skills/baremetal/mmio-and-bit-manipulation — BSRR/MODER マスク
  • skills/baremetal/peripherals-from-datasheet — RM のピン配置テーブル
  • skills/baremetal/uart-serial-baremetal — シリアル用 AF マルチプレクサー

コメント