- BCM2711 (Raspberry Pi 4) のGIPOペリフェラルに関連するレジスタについて教えてください。
- GPFSELnについて教えてください。
- GPIO機能の設定を行うための型をRustで定義できますか？
- GPIOFuncというGPIO機能設定のための型を定義してみました。これを使って、実装できますか？
- GPIOピンをプルアップ、プルダウン設定するレジスタについて教えてください。
- GPPUPDnレジスタについて詳しく教えてください。
- BCM2711でGPIOのプルアップ、プルダウンする関数をRustで書けますか？
- マニュアルには以下のようにGPPUDCKというレジスタを、GPPUDレジスタと同時に利用せよと記載されています。これに従って上記のコードを書き直せますか？
  - The GPIO Pull-up/down Clock Registers control the actuation of internal pull-downs on the respective GPIO pins. These registers must be used in conjunction with the GPPUD register to effect GPIO Pull-up/down changes. The following sequence of events is required:
    1. Write to GPPUD to set the required control signal (i.e. Pull-up or Pull-Down or neither to remove the current Pull-up/down)
    2. Wait 150 cycles – this provides the required set-up time for the control signal
    3. Write to GPPUDCLK0/1 to clock the control signal into the GPIO pads you wish to modify – NOTE only the pads which receive a clock will be modified, all others will retain their previous state.
    4. Wait 150 cycles – this provides the required hold time for the control signal
    5. Write to GPPUD to remove the control signal
    6. Write to GPPUDCLK0/1 to remove the clock
- ありがとうございます！GPIOに関するこれまでの結果を統合できますか？つまり、GPIOPin構造体を定義し、それにset_function、set_pull_up_downを実装できますか？
- 上記のコードに適切なドキュメンテーションを追加してください。
- 上記コード（モジュール）についての説明をマークダウンで出力できますか？
