対、また私です、最近 STM32 を学んでタイマーを学びましたが、51 に比べて複雑さは一段と増しました。そして、多くの用語や公式も増えました。ここで簡単にまとめて、学んだことを整理します。
(一)GPIO#
「GPIO」は「General Purpose Input Output」の略で、「汎用入出力インターフェース」という意味で、信号を受け取ったり出力したりできます。
(二)AFIO#
AFIO は「Alternate Function I/O」の略で、「多機能入出力」という意味です。STM32 ではいくつかのピンが多機能であるため、時には AFIO を調整する必要があります。また、外部割り込みの際にも AFIO を設定して割り込みピンを選択する必要があります。
(三)割り込み関連#
- 「EXTI」は外部割り込みレジスタで、GPIO ピンのレベル信号を監視して、NVIC に割り込みを要求します。
- 「NVIC」の正式名称は「Nested vectored interrupt controller」で、すなわちネストされたベクター割り込みコントローラで、割り込みを管理および制御します。
(四)タイマー関連#
- 「PSC」はプリスケーラを表します。
- 「CNT」はカウンタを表し、CNT が ARR に達するとオーバーフローします。
- 「ARR」はオートリロードレジスタを表します。
- 「CCR」は「Capture/Compare Register」の略で、日本語では「キャプチャ比較レジスタ」といい、ARR と比較して PWM 波を生成します。
- 「CK」はクロックを表し、「Clock」の略です。
- 「CK_CNT」はタイマーのカウント周波数です。
- 「CK_PSC」はタイマーのプリスケール値で、STM32 ではこの値は 72MHZ です。
(五)計算公式#
- タイマーオーバーフロー周波数:CK_CNT_OV=CK_CNT/ARR+1=CK_PSC/PSC+1/ARR+1
- PWM デューティ比:Duty=CRR/ARR+1
- PWM 周波数:Freq=CK_PSC/PSC+1/ARR+1
- PWM 解像度:Reso=1/ARR+1
現在、タイマーを学び始めたばかりで、設定する必要があることはこれだけです。まだ粗略に理解しているだけで、私はまだ大学 1 年生で、専門の授業は始まっていないので、理解できないことが多いです。ただ、使い方を学ぶだけで、今後さらに詳しく学んでいくつもりです。