Timer support(timer.h)
タイマーのサポート
原文
ヘッダーファイル:libmaple/timer.h
関連ヘッダーファイル:stm32f1/include/series/timer.h
概要
Timerをサポートします。
データ型
libmapleの他のほとんどの周辺機器とは違って、タイマーレジスタのマップタイプは、構造体ではなく共用体です。これは、高度な汎用タイマーが存在するためです。 マップ型、および共用体timer_reg_mapは、すべてそれをまとめています。
■ struct timer_adv_reg_map
高機能制御タイマ・レジスタ・マップ・タイプ
__IO uint32 CR1 制御レジスタ 1(TIMx_CR1)
__IO uint32 CR2 制御レジスタ 2(TIMx_CR2)
__IO uint32 SMCR スレーブモード制御レジスタ(TIMx_SMCR)
__IO uint32 DIER 割り込みイネーブルレジスタ(TIMx_DIER)
__IO uint32 SR ステータスレジスタ(TIMx_SR)
__IO uint32 EGR イベント生成レジスタ(TIMx_EGR)
__IO uint32 CCMR1 キャプチャ/比較モードレジスタ 1(TIMx_CCMR1)
__IO uint32 CCMR2 キャプチャ/比較モードレジスタ 2(TIMx_CCMR2)
__IO uint32 CCER キャプチャ/比較イネーブルレジスタ(TIMx_CCER)
__IO uint32 CNT カウンタ(TIMx_CNT)
__IO uint32 PSC プリスケーラ(TIMx_PSC)
__IO uint32 ARR 自動再ロードレジスタ(TIMx_ARR)
__IO uint32 RCR 繰り返しカウンタレジスタ(TIMx_RCR)
__IO uint32 CCR1 キャプチャ/比較レジスタ 1(TIMx_CCR1)
__IO uint32 CCR2 キャプチャ/比較レジスタ 2(TIMx_CCR2)
__IO uint32 CCR3 キャプチャ/比較レジスタ 3(TIMx_CCR3)
__IO uint32 CCR4 キャプチャ/比較レジスタ 4(TIMx_CCR4)
__IO uint32 BDTR ブレークおよびデッドタイムレジスタ(TIMx_BDTR)
__IO uint32 DCR DMA 制御レジスタ(TIMx_DCR)
__IO uint32 DMAR 完全転送 DMA アドレス(TIMx_DMAR)
■ struct timer_gen_reg_map
汎用タイマ・レジスタ・マップ・タイプ
__IO uint32 CR1 制御レジスタ 1(TIMx_CR1)
__IO uint32 CR2 制御レジスタ 2(TIMx_CR2)
__IO uint32 SMCR スレーブモード制御レジスタ(TIMx_SMCR)
__IO uint32 DIER 割り込みイネーブルレジスタ(TIMx_DIER)
__IO uint32 SR ステータスレジスタ(TIMx_SR)
__IO uint32 EGR イベント生成レジスタ(TIMx_EGR)
__io uint32 CCMR1 キャプチャ/比較モードレジスタ 1(TIMx_CCMR1)
__IO uint32 CCMR2 キャプチャ/比較モードレジスタ 2(TIMx_CCMR2)
__IO uint32 CCER キャプチャ/比較イネーブルレジスタ(TIMx_CCER)
__IO uint32 CNT カウンタ(TIMx_CNT)
__IO uint32 PSC プリスケーラ(TIMx_PSC)
__IO uint32 ARR 自動再ロードレジスタ(TIMx_ARR)
__IO uint32 CCR1 キャプチャ/比較レジスタ 1(TIMx_CCR1)
const uint32 RESERVED1リザーブ
__IO uint32 CCR2 キャプチャ/比較レジスタ 2(TIMx_CCR2)
__IO uint32 CCR3 キャプチャ/比較レジスタ 3(TIMx_CCR3)
__IO uint32 CCR4 キャプチャ/比較レジスタ 4(TIMx_CCR4)
const uint32 RESERVED2リザーブ
__IO uint32 DCR DMA 制御レジスタ(TIMx_DCR)
__IO uint32 DMAR 完全転送 DMA アドレス(TIMx_DMAR)
■ struct timer_bas_reg_map
基本タイマ・レジスタ・マップ・タイプ
__IO uint32 CR1 制御レジスタ 1(TIMx_CR1)
__IO uint32 CR2 制御レジスタ 2(TIMx_CR2)
const uint32 RESERVED1 リザーブ
__IO uint32 DIER 割り込みイネーブルレジスタ(TIMx_DIER)
__IO uint32 SR ステータスレジスタ(TIMx_SR)
__IO uint32 EGR イベント生成レジスタ(TIMx_EGR)
const uint32 RESERVED2 リザーブ
const uint32 RESERVED3 リザーブ
const uint32 RESERVED4 リザーブ
__IO uint32 CNT カウンタ(TIMx_CNT)
__IO uint32 PSC プリスケーラ(TIMx_PSC)
__IO uint32 ARR 自動再ロードレジスタ(TIMx_ARR)
■ enum timer_type
タイマ・タイプ 列挙型
TIMER_ADVANCED 高機能制御タイマ
TIMER_GENERAL 汎用タイマ
TIMER_BASIC 基本タイマ
■ struct timer_dev
タイマーデバイスタイプ型
timer_reg_map regs レジスタ・マップ
rcc_clk_id clk_id RCC クロック情報
timer_type type タイマ・タイプ
voidFuncPtr handlers[] ユーザIRQハンドラ ※1このフィールドは利用不可
※1 このフィールドは利用不可。代わりに下記のAPIを使用して下さい。
timer_attach_interrupt()
timer_detach_interrupt()
■ enum timer_mode
タイマ・モード 列挙型
タイマ・チャネルの動作を設定するために使用します。
注意:すべてのモードですべてのタイマを設定できるわけではありません。
TIMER_DISABLED タイマはカウントを停止し、チャネル割り込みは切り離され、状態変化は出力されません。
TIMER_PWM PWM出力
TIMER_OUTPUT_COMPARE カウンタ値がチャネルコンペア値の1つに達するたびに、対応する割り込みが発生します。
TIMER_ENCODER エンコーダモード
■ enum timer_channel
タイマ・チャンネル番号
TIMER_CH1 チャンネル 1
TIMER_CH2 チャンネル 2
TIMER_CH3 チャンネル 3
TIMER_CH4 チャンネル 4
■ enum timer_interrupt_id
タイマ割込み番号
すべてのタイマーがこれらの値のすべてをサポートするわけではありません。 各値の説明を参照してください。
TIMER_UPDATE_INTERRUPT カウンタ・更新割り込み。すべてのタイマーで使用できます。
TIMER_CC1_INTERRUPT キャプチャ/比較1 割り込み。高機能制御タイマ、汎用タイマで使用できます。
TIMER_CC2_INTERRUPT キャプチャ/比較2 割り込み。高機能制御タイマ、汎用タイマで使用できます。
TIMER_CC3_INTERRUPT キャプチャ/比較3 割り込み。高機能制御タイマ、汎用タイマで使用できます。
TIMER_CC4_INTERRUPT キャプチャ/比較4 割り込み。高機能制御タイマ、汎用タイマで使用できます。
TIMER_COM_INTERRUPT COM割り込み。高機能制御タイマーのみ使用できます。
TIMER_TRG_INTERRUPT トリガ割り込み.。 高機能制御タイマ、汎用タイマで使用できます。
TIMER_BREAK_INTERRUPT ブレーク割り込み。高機能制御タイマーのみ使用できます。
■ enum timer_dma_base_addr
タイマDMAのベースアドレス
DMA転送のベースアドレスを定義します。
TIMER_DMA_BASE_CR1 TIMER_DCR_DBA_CR1 ベースは制御レジスタ 1
TIMER_DMA_BASE_CR2 TIMER_DCR_DBA_CR2 ベースは制御レジスタ 2
TIMER_DMA_BASE_SMCR TIMER_DCR_DBA_SMCR ベースはスレーブモード制御レジスタ
TIMER_DMA_BASE_DIER TIMER_DCR_DBA_DIER ベースはDMA/割り込みイネーブルレジスタ
TIMER_DMA_BASE_SR TIMER_DCR_DBA_SR ベースはステータスレジスタ
TIMER_DMA_BASE_EGR TIMER_DCR_DBA_EGR ベースはイベント生成レジスタ
TIMER_DMA_BASE_CCMR1 TIMER_DCR_DBA_CCMR1 ベースはキャプチャ/比較モードレジスタ 1
TIMER_DMA_BASE_CCMR2 TIMER_DCR_DBA_CCMR2 ベースはキャプチャ/比較モードレジスタ 2
TIMER_DMA_BASE_CCER TIMER_DCR_DBA_CCER ベースはキャプチャ/比較イネーブルレジスタ
TIMER_DMA_BASE_CNT TIMER_DCR_DBA_CNT ベースはカウンタ
TIMER_DMA_BASE_PSC TIMER_DCR_DBA_PSC ベースはプリスケーラ
TIMER_DMA_BASE_ARR TIMER_DCR_DBA_ARR ベースは自動再ロードレジスタ
TIMER_DMA_BASE_RCR TIMER_DCR_DBA_RCR ベースは繰り返しカウンタレジスタ
TIMER_DMA_BASE_CCR1 TIMER_DCR_DBA_CCR1 ベースはキャプチャ/比較レジスタ 1
TIMER_DMA_BASE_CCR2 TIMER_DCR_DBA_CCR2 ベースはキャプチャ/比較レジスタ 2
TIMER_DMA_BASE_CCR3 TIMER_DCR_DBA_CCR3 ベースはキャプチャ/比較レジスタ 3
TIMER_DMA_BASE_CCR4 TIMER_DCR_DBA_CCR4 ベースはキャプチャ/比較レジスタ 4
TIMER_DMA_BASE_BDTR TIMER_DCR_DBA_BDTR ベースはブレークおよびデッドタイムレジスタ
TIMER_DMA_BASE_DCR TIMER_DCR_DBA_DCR ベースはDMA制御レジスタ
TIMER_DMA_BASE_DMAR TIMER_DCR_DBA_DMA ベースは完全転送 DMA アドレス
■ enum timer_oc_mode
タイマ出力比較モード
TIMER_OC_MODE_FROZEN
フリーズ:アウトプット比較レジスタとカウンタの比較は出力に影響を与えません。
TIMER_OC_MODE_ACTIVE_ON_MATCH
OCxREF信号は、カウントがチャネルキャプチャ/比較レジスタに一致すると強制的にHIGHになります。TIMER_OC_MODE_INACTIVE_ON_MATCH
OCxREF信号は、カウンタがチャネルキャプチャ/比較レジスタに一致すると強制的にLOWになります。
TIMER_OC_MODE_TOGGLE
OCxREFは、カウンタがキャネルキャプチャ/比較レジスタと一致するとトグルします。
TIMER_OC_MODE_FORCE_INACTIVE
OCxREFは強制的にLOWになります。
TIMER_OC_MODE_FORCE_ACTIVE
OCxREFは強制的にHIGHになります。
TIMER_OC_MODE_PWM_1
アップカウントでは、カウントがチャネルキャプチャ/比較レジスタより小さいかぎり、チャネルはアクティブです。それ以外の場合は非アクティブです。 ダウンカウントでは、カウントはキャプチャ/比較レジスタを超過する限りチャネルは非アクティブです。
TIMER_OC_MODE_PWM_2
アップカウントでは、カウントがキャプチャ/比較レジスタより小さい場合はチャネルが非アクティブで、それ以外の場合はアクティブです。 ダウンカウントでは、カウントがキャプチャ/比較レジスタを超過する限りチャネルはアクティブです。
■ enum timer_oc_mode_flags
TIMER_OC_CE アウトプットコンペアクリアイネーブル
TIMER_OC_PE アウトプットコンペアプリロードイネーブル
TIMER_OC_FE アウトプットコンペア高速イネーブル
デバイス
■ timer_dev * TIMER1 Timer 1 デバイス (高機能制御タイマ)
■ timer_dev * TIMER2 Timer 2 デバイス (汎用タイマ)
■ timer_dev * TIMER3 Timer 3 デバイス (汎用タイマ)
■ timer_dev * TIMER4 Timer 4 デバイス (汎用タイマ)
■ timer_dev * TIMER5 Timer 5 デバイス (汎用タイマ)
■ timer_dev * TIMER6 Timer 6 デバイス (基本タイマ)
■ timer_dev * TIMER7 Timer 7 デバイス (基本タイマ)
■ timer_dev * TIMER8 Timer 8 デバイス (高機能制御タイマ)
API関数
有効化と無効化
■ void timer_init(timer_dev *dev)
タイマを初期化し、レジスタマップをリセットします。
引数
dev :初期化するタイマ・デバイス
■ void timer_init_all(void)
チップ上のすべてのタイマ・デバイスを初期化します。
■ void timer_disable(timer_dev *dev)
タイマを無効にします。
タイマはカウントを停止し、すべてのDMAリクエストと割り込みは無効になり、状態の変化は出力されません。
引数
dev :無効にするタイマ・デバイス
■ void timer_disable_all(void)
デバイス上のすべてのタイマを無効にします。
一般的な設定
■ void timer_set_mode(timer_dev *dev, uint8 channel, timer_mode mode)
個々のタイマチャンネルのモードを設定します。
すべてのタイマーをすべてのモードで設定できるとは限りません。 たとえば、基本タイマーを出力比較モードに構成することはできません。 必要なモードに適したタイマーを使用してください。
引数
dev :対象タイマ・デバイス
channe :対象チャンネル TIMER_CH1、TIMER_CH2、TIMER_CH3、TIMER_CH4 または 1~ 4
mode :設定モード TIMER_DISABLED、TIMER_PWM、TIMER_OUTPUT_COMPARE、TIMER_ENCODER
■ void timer_foreach(void (*fn)(timer_dev*))
タイマーデバイスの関数を呼び出します。
引数
fn :各タイマーデバイスを呼び出す関数
カウントとプリスケーラ
■ uint16 timer_get_count(timer_dev *dev)
タイマーのカウンタ値を返します。
カウンタが低プリスケーラで動作している場合、この値は不正確になる可能性があります。
引数
dev :対象タイマ・デバイス
戻り値
カウンタの値
■ void timer_set_count(timer_dev *dev, uint16 value)
指定されたタイマのカウンタ値を設定します。
引数
dev :対象タイマ・デバイス
value :カウンタ値
■ void timer_pause(timer_dev *dev)
タイマのカウンタを停止します。
タイマーのモードやその他の設定には影響しません。
■ void timer_resume(timer_dev *dev)
引数
dev :対象タイマ・デバイス
タイマのカウンタを開始します。
タイマーのモードやその他の設定には影響しません。
引数
dev :対象タイマ・デバイス
■ void timer_generate_update(timer_dev *dev)
指定されたタイマーの更新イベントを生成します。
通常、これによりPSCレジスタとARRレジスタのプリスケーラ値と自動リロード値が直ちに有効になります。 ただし、この関数は、UDISビットがタイマのCR1レジスタに設定されている場合は何も行いません(UDISはデフォルトでクリアされます)。
引数
dev :対象タイマ・デバイス
■ uint16 timer_get_prescaler(timer_dev *dev)
指定されたタイマのプリスケーラを返します。
タイマのプリスケーラが設定されている場合(たとえば、timer_set_prescaler()またはTIMx_PSCレジスタにアクセスする場合)、この関数によって返される値は新しい設定を反映しますが、タイマのカウンタは次の更新イベントで新しいプリスケーラを反映します。
引数
dev :対象タイマ・デバイス
戻り値
プリスケール値
■ void timer_set_prescaler(timer_dev *dev, uint16 psc)
タイマのプリスケール値を設定します。
新しい値は、次の更新イベントまで有効になりません。
引数
dev :対象タイマ・デバイス
psc :新しいプリスケール値
■ uint16 timer_get_reload(timer_dev *dev)
タイマーのリロード値を返します。
引数
dev :対象タイマ・デバイス
戻り値
リロード値
■ void timer_set_reload(timer_dev *dev, uint16 arr)
タイマーのリロード値を設定します。
引数
dev :対象タイマ・デバイス
arr :使用する新しいリロード値。 次の更新イベントで有効になります。
■ uint8 get_direction(timer_dev *dev)
カウンタの方向(アップ、ダウン)を返します。
引数
dev :対象タイマ・デバイス
戻り値
方向
0:カウンタはアップカウンタとして使用されます。
1:カウンタはダウンカウンタとして使用されます。
割り込み
■ void timer_attach_interrupt(timer_dev *dev, uint8 interrupt, voidFuncPtr handler)
タイマー割り込みを接続します。
引数
dev :対象タイマ・デバイス
interrupt :割り込み番号。 タイマに適したtimer_interrupt_idまたはtimer_channel値を指定します。
handler :指定された割り込みに接続するハンドラ
■ void timer_detach_interrupt(timer_dev *dev, uint8 interrupt)
タイマ割り込みを解除します。
引数
dev :対象タイマ・デバイス
interrupt :割り込み番号 。タイマに適したtimer_interrupt_idまたはtimer_channel値を指定します。
■ void timer_enable_irq(timer_dev *dev, uint8 interrupt)
タイマ割り込みを有効にします。
引数
dev :対象タイマ・デバイス
interrupt :割り込み番号 。タイマに適したtimer_interrupt_idまたはtimer_channel値を指定します。
■ void timer_disable_irq(timer_dev *dev, uint8 interrupt)
タイマ割り込みを無効にします。
引数
dev :対象タイマ・デバイス
interrupt :割り込み番号 。タイマに適したtimer_interrupt_idまたはtimer_channel値を指定します。
キャプチャ/比較
■ uint16 timer_get_compare(timer_dev *dev, uint8 channel)
指定されたタイマチャネルの比較値を取得します。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
戻り値
比較値
■ void timer_set_compare(timer_dev *dev, uint8 channel, uint16 value)
指定されたタイマチャネルの比較値を設定します。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
value :比較値
■ void timer_cc_enable(timer_dev *dev, uint8 channel)
タイマチャネルのキャプチャ/コンペア信号をイネーブルにします。
チャネルが出力として構成されている場合、対応する出力比較信号が対応する出力ピンに出力されます。 チャネルが入力として設定されている場合は、インプットキャプチャ/コンペアレジスタへのカウンタ値のキャプチャをイネーブルにします。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
■ void timer_cc_disable(timer_dev *dev, uint8 channel)
タイマチャネルのアウトプットコンペアまたはインプットキャプチャ信号をディセーブルにします。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
■ uint8 timer_cc_get_pol(timer_dev *dev, uint8 channel)
チャンネルのキャプチャ/コンペアの出力極性を取得します。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
戻り値
出力極性 0 または 1
■ void timer_cc_set_pol(timer_dev *dev, uint8 channel, uint8 pol)
タイマチャネルのキャプチャ/コンペア出力の極性を設定します。
タイマチャネルが出力として設定されている場合、pol == 0は出力チャネルがアクティブハイになることを意味します。 pol == 1はアクティブローを意味します。
タイマチャネルが入力として設定されている場合、pol == 0はICnの立ち上がりエッジでキャプチャが行われたことを意味します。 外部トリガとして使用すると、ICnは反転しません。 pol == 1は、ICnの立ち下がりエッジでキャプチャが行われたことを意味します。 外部トリガとして使用するとICnは反転します。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
pol :出力極性 0 または 1
■ void timer_oc_set_mode(timer_dev *dev, uint8 channel, timer_oc_mode mode, uint8 flags)
チャネルのアウトプットコンペアモードを設定します。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
mode :設定するタイマモード。
flags :timer_oc_mode_flagsのOR
DMA
■ void timer_dma_enable_trg_req(timer_dev *dev)
タイマーのトリガーDMA要求を有効にします。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ void timer_dma_disable_trg_req(timer_dev *dev)
タイマートリガーDMA要求を無効にします。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ void timer_dma_enable_req(timer_dev *dev, uint8 channel)
タイマーチャネルのDMA要求を有効にします。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ void timer_dma_disable_req(timer_dev *dev, uint8 channel)
タイマーチャネルのDMA要求を無効にします。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ uint8 timer_dma_get_burst_len(timer_dev *dev)
タイマーのDMAバースト長を取得します。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
戻り値
DMA要求ごとに転送されるバイト数 1~18
■ void timer_dma_set_burst_len(timer_dev *dev, uint8 length)
タイマーのDMAバースト長を設定します。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ timer_dma_base_addr timer_dma_get_base_addr(timer_dev *dev)
タイマーのDMAベースアドレスを取得します。
いくつかの制限が適用されます。 ST RM0008を参照してください。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
戻り値
DMAベースアドレス
■ void timer_dma_set_base_addr(timer_dev *dev, timer_dma_base_addr dma_base)
タイマのDMAベースアドレス。
いくつかの制限が適用されます。 ST RM0008を参照してください。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ void timer_dma_enable_upd_req(timer_dev *dev)
タイマーの更新DMA要求を有効にします。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ void timer_dma_disable_upd_req(timer_dev *dev)
タイマーの更新DMA要求を無効にします。
引数
dev :対象タイマ・デバイス。タイプがTIMER_ADVANCEDまたはTIMER_GENERALである必要があります。
■ int timer_has_cc_channel(timer_dev *dev, uint8 channel)
タイマに特定のキャプチャ/比較チャネルがあるかどうかを判断します。
異なるタイマーは、キャプチャ/比較チャネルの数が異なります(一部にはまったくありません)。 この機能を使用して、所定のタイマー/チャンネルの組み合わせが機能するかどうかをテストします。
引数
dev :対象タイマ・デバイス
channel:対象チャネル
戻り値
d対象タイマ・デバイスにチャネルがある場合は0以外、そうでない場合は0
レジスタマップベースポインタ
■ TIMER1_BASE ((struct timer_adv_reg_map*)0x40012C00) タイマ1 レジスタマップベースポインタ
■ TIMER2_BASE ((struct timer_gen_reg_map*)0x40000000) タイマ2 レジスタマップベースポインタ
■ TIMER3_BASE ((struct timer_gen_reg_map*)0x40000400) タイマ3 レジスタマップベースポインタ
■ TIMER4_BASE ((struct timer_gen_reg_map*)0x40000800) タイマ4 レジスタマップベースポインタ
■ TIMER5_BASE ((struct timer_gen_reg_map*)0x40000C00) タイマ5 レジスタマップベースポインタ
■ TIMER6_BASE ((struct timer_bas_reg_map*)0x40001000) タイマ6 レジスタマップベースポインタ
■ TIMER7_BASE ((struct timer_bas_reg_map*)0x40001400) タイマ7 レジスタマップベースポインタ
■ TIMER8_BASE ((struct timer_adv_reg_map*)0x40013400) タイマ8 レジスタマップベースポインタ
■ TIMER9_BASE ((struct timer_gen_reg_map*)0x40014C00) タイマ9 レジスタマップベースポインタ
■ TIMER10_BASE ((struct timer_gen_reg_map*)0x40015000) タイマ10レジスタマップベースポインタ
■ TIMER11_BASE ((struct timer_gen_reg_map*)0x40015400) タイマ11レジスタマップベースポインタ
■ TIMER12_BASE ((struct timer_gen_reg_map*)0x40001800) タイマ12レジスタマップベースポインタ
■ TIMER13_BASE ((struct timer_gen_reg_map*)0x40001C00) タイマ13レジスタマップベースポインタ
■ TIMER14_BASE ((struct timer_gen_reg_map*)0x40002000) タイマ14レジスタマップベースポインタ
レジスタのビット定義
制御レジスタ1(CR1)
ビット番号
TIMER_CR1_ARPE_BIT[7] (rw) 自動再ロードプリロードイネーブル
TIMER_CR1_DIR_BIT [4] (rw) 方向
TIMER_CR1_OPM_BIT [3] (rw) ワンパルスモード
TIMER_CR1_URS_BIT [2] (rw) 更新リクエストソース
TIMER_CR1_UDIS_BIT[1] (rw) 更新ディセーブル
TIMER_CR1_CEN_BIT [0] (rw) カウンタイネーブル
設定値
TIMER_CR1_CKD (0x3 << 8) クロック分周 3ビット
TIMER_CR1_CKD_1TCKINT (0x0 << 8) サンプリングクロック = タイマクロック(周波数)
TIMER_CR1_CKD_2TCKINT (0x1 << 8) サンプリングクロック = 2 x タイマクロック(周波数)
TIMER_CR1_CKD_4TICKINT (0x2 << 8) サンプリングクロック = 4 x タイマクロック(周波数)
TIMER_CR1_ARPE (1U << TIMER_CR1_ARPE_BIT) 自動再ロードプリロードイネーブル
TIMER_CR1_CKD_CMS (0x3 << 5) センターアラインモード選択 2ビット
TIMER_CR1_CKD_CMS_EDGE (0x0 << 5) エッジアラインモード
TIMER_CR1_CKD_CMS_CENTER1 (0x1 << 5) センターアラインモード 1
TIMER_CR1_CKD_CMS_CENTER2 (0x2 << 5) センターアラインモード 2
TIMER_CR1_CKD_CMS_CENTER3 (0x3 << 5) センターアラインモード 1
TIMER_CR1_DIR (1U << TIMER_CR1_DIR_BIT) 方向
TIMER_CR1_OPM (1U << TIMER_CR1_OPM_BIT) ワンパルスモード
TIMER_CR1_URS (1U << TIMER_CR1_URS_BIT) 更新リクエストソース
TIMER_CR1_UDIS (1U << TIMER_CR1_UDIS_BIT) 更新ディセーブル
TIMER_CR1_CEN (1U << TIMER_CR1_CEN_BIT) カウンタイネーブル
制御レジスタ1(CR2)
ビット番号
TIMER_CR2_OIS4_BIT [14] (rw) OIS4:出力アイドル状態 4(OC4 出力)
TIMER_CR2_OIS3N_BIT [13] (rw) OIS3N:出力アイドル状態 3(OC3N 出力)
TIMER_CR2_OIS3_BIT [12] (rw) OIS3:出力アイドル状態 3(OC3 出力)
TIMER_CR2_OIS2N_BIT [11] (rw) OIS2N:出力アイドル状態 2(OC2N 出力)
TIMER_CR2_OIS2_BIT [10] (rw) OIS2:出力アイドル状態 2(OC2 出力)
TIMER_CR2_OIS1N_BIT [9] (rw) OIS1N:出力アイドル状態 1(OC1N 出力)
TIMER_CR2_OIS1_BIT [8] (rw) OIS1:出力アイドル状態 1(OC1 出力)
TIMER_CR2_TI1S_BIT [7] (rw) TI1S:TI1 選択
TIMER_CR2_CCDS_BIT [3] (rw) CCDS:キャプチャ/比較 DMA 選択
TIMER_CR2_CCUS_BIT [2] (rw) CCUS:キャプチャ/比較制御更新選択
TIMER_CR2_CCPC_BIT [0] (rw) CCPC:キャプチャ/比較プリロード制御
設定値
TIMER_CR2_OIS4 (1U << TIMER_CR2_OIS4_BIT) 出力アイドル状態 4(OC4 出力)
TIMER_CR2_OIS3N (1U << TIMER_CR2_OIS3N_BIT) 出力アイドル状態 3(OC3N 出力)
TIMER_CR2_OIS3 (1U << TIMER_CR2_OIS3_BIT) 出力アイドル状態 3(OC3 出力)
TIMER_CR2_OIS2N (1U << TIMER_CR2_OIS2N_BIT) 出力アイドル状態 2(OC2N 出力)
TIMER_CR2_OIS2 (1U << TIMER_CR2_OIS2_BIT) 出力アイドル状態 2(OC2 出力)
TIMER_CR2_OIS1N (1U << TIMER_CR2_OIS1N_BIT) 出力アイドル状態 1(OC1N 出力)
TIMER_CR2_OIS1 (1U << TIMER_CR2_OIS1_BIT) 出力アイドル状態 1(OC1 出力)
TIMER_CR2_TI1S (1U << TIMER_CR2_TI1S_BIT) TI1 選択
TIMER_CR2_MMS (0x7 << 4) マスタモード選択 2ビット
TIMER_CR2_MMS_RESET (0x0 << 4) リセット
TIMER_CR2_MMS_ENABLE (0x1 << 4) イネーブル
TIMER_CR2_MMS_UPDATE (0x2 << 4) 更新
TIMER_CR2_MMS_COMPARE_PULSE (0x3 << 4) パルス比較
TIMER_CR2_MMS_COMPARE_OC1REF (0x4 << 4) 比較 - OC1REF 信号がトリガ出力(TRGO)として使用
TIMER_CR2_MMS_COMPARE_OC2REF (0x5 << 4) 比較 - OC2REF 信号がトリガ出力(TRGO)として使用
TIMER_CR2_MMS_COMPARE_OC3REF (0x6 << 4) 比較 - OC3REF 信号がトリガ出力(TRGO)として使用
TIMER_CR2_MMS_COMPARE_OC4REF (0x7 << 4) 比較 - OC4REF 信号がトリガ出力(TRGO)として使用
TIMER_CR2_CCDS (1U << TIMER_CR2_CCDS_BIT) CCDS:キャプチャ/比較 DMA 選択
TIMER_CR2_CCUS (1U << TIMER_CR2_CCUS_BIT) CCUS:キャプチャ/比較制御更新選択
TIMER_CR2_CCPC (1U << TIMER_CR2_CCPC_BIT) CCPC:キャプチャ/比較プリロード制御
スレーブモード制御レジスタ(TIMx_SMCR)
ビット番号
TIMER_SMCR_ETP_BIT [15] (rw) ETP:外部トリガ極性
TIMER_SMCR_ECE_BIT [14] (rw) ECE:外部クロックイネーブル
TIMER_SMCR_MSM_BIT [7] (rw) MSM:マスタ/スレーブモード
設定値
TIMER_SMCR_ETP (1U << TIMER_SMCR_ETP_BIT) ETP:外部トリガ極性
TIMER_SMCR_ECE (1U << TIMER_SMCR_ECE_BIT) ECE:外部クロックイネーブル
TIMER_SMCR_ETPS (0x3 << 12) ETPS [13:12] 2ビット:外部トリガプリスケーラ
TIMER_SMCR_ETPS_OFF (0x0 << 12) プリスケーラオフ
TIMER_SMCR_ETPS_DIV2 (0x1 << 12) ETRP 周波数は 2 分周
TIMER_SMCR_ETPS_DIV4 (0x2 << 12) ETRP 周波数は 4 分周
TIMER_SMCR_ETPS_DIV8 (0x3 << 12) ETRP 周波数は 8 分周
TIMER_SMCR_ETF (0xF << 12) ETF [11:8] 4ビット:外部トリガフィルタ
TIMER_SMCR_MSM (1U << TIMER_SMCR_MSM_BIT) MSM:マスタ/スレーブモード
TIMER_SMCR_TS (0x7 << 4) TS [6:4]:トリガ選択
TIMER_SMCR_TS_ITR0 (0x0 << 4) 内部トリガ 0(ITR0)
TIMER_SMCR_TS_ITR1 (0x1 << 4) 内部トリガ 1(ITR0)
TIMER_SMCR_TS_ITR2 (0x2 << 4) 内部トリガ 2(ITR0)
TIMER_SMCR_TS_ITR3 (0x3 << 4) 内部トリガ 3(ITR0)
TIMER_SMCR_TS_TI1F_ED (0x4 << 4) TI1 エッジ検出回路(TI1F_ED)
TIMER_SMCR_TS_TI1FP1 (0x5 << 4) フィルタ後のタイマ入力 1(TI1FP1)
TIMER_SMCR_TS_TI2FP2 (0x6 << 4) フィルタ後のタイマ入力 2(TI2FP2)
TIMER_SMCR_TS_ETRF (0x7 << 4) 外部トリガ入力(ETRF)
TIMER_SMCR_SMS 0x7 SMS:[2:0] 3ビット スレーブモード選択
TIMER_SMCR_SMS_DISABLED 0x0 スレーブモード無効
TIMER_SMCR_SMS_ENCODER1 0x1 エンコーダモード 1
TIMER_SMCR_SMS_ENCODER2 0x2 エンコーダモード 2
TIMER_SMCR_SMS_ENCODER3 0x3 エンコーダモード 3
TIMER_SMCR_SMS_RESET 0x4 リセットモード
TIMER_SMCR_SMS_GATED 0x5 ゲートモード
TIMER_SMCR_SMS_TRIGGER 0x6 トリガモード
TIMER_SMCR_SMS_EXTERNAL 0x7 外部クロックモード 1
DMA/割り込みイネーブルレジスタ(TIMx_DIER)
ビット番号
TIMER_DIER_TDE_BIT [14] (rw) TDE:トリガ DMA リクエストイネーブル
TIMER_DIER_COMDE_BIT [13] (rw) COMDE:COM DMA リクエストイネーブル
TIMER_DIER_CC4DE_BIT [12] (rw) CC4DE:キャプチャ/比較 4 DMA リクエストイネーブル
TIMER_DIER_CC3DE_BIT [11] (rw) CC3DE:キャプチャ/比較 3 DMA リクエストイネーブル
TIMER_DIER_CC2DE_BIT [10] (rw) CC2DE:キャプチャ/比較 2 DMA リクエストイネーブル
TIMER_DIER_CC1DE_BIT [9] (rw) CC1DE:キャプチャ/比較 1 DMA リクエストイネーブル
TIMER_DIER_UDE_BIT [8] (rw) UDE:更新 DMA リクエストイネーブル
TIMER_DIER_BIE_BIT [7] (rw) BIE:ブレーク割り込みイネーブル
TIMER_DIER_TIE_BIT [6] (rw) TIE:トリガ割り込みイネーブル
TIMER_DIER_COMIE_BIT [5] (rw) COMIE:COM 割り込みイネーブル
TIMER_DIER_CC4IE_BIT [4] (rw) CC4IE:キャプチャ/比較 4 割り込みイネーブル
TIMER_DIER_CC3IE_BIT [3] (rw) CC3IE:キャプチャ/比較 3 割り込みイネーブル
TIMER_DIER_CC2IE_BIT [2] (rw) CC2IE:キャプチャ/比較 2 割り込みイネーブル
TIMER_DIER_CC1IE_BIT [1] (rw) CC1IE:キャプチャ/比較 1 割り込みイネーブル
TIMER_DIER_UIE_BIT [0] (rw) UIE:更新割り込みイネーブル
設定値
TIMER_DIER_TDE (1U << TIMER_DIER_TDE_BIT) TDE:トリガ DMA リクエストイネーブル
TIMER_DIER_COMDE (1U << TIMER_DIER_COMDE_BIT) COMDE:COM DMA リクエストイネーブル
TIMER_DIER_CC4DE (1U << TIMER_DIER_CC4DE_BIT) CC4DE:キャプチャ/比較 4 DMA リクエストイネーブル
TIMER_DIER_CC3DE (1U << TIMER_DIER_CC3DE_BIT) CC3DE:キャプチャ/比較 3 DMA リクエストイネーブル
TIMER_DIER_CC2DE (1U << TIMER_DIER_CC2DE_BIT) CC2DE:キャプチャ/比較 2 DMA リクエストイネーブル
TIMER_DIER_CC1DE (1U << TIMER_DIER_CC1DE_BIT) CC1DE:キャプチャ/比較 1 DMA リクエストイネーブル
TIMER_DIER_UDE (1U << TIMER_DIER_UDE_BIT) UDE:更新 DMA リクエストイネーブル
TIMER_DIER_BIE (1U << TIMER_DIER_BIE_BIT) BIE:ブレーク割り込みイネーブル
TIMER_DIER_TIE (1U << TIMER_DIER_TIE_BIT) TIE:トリガ割り込みイネーブル
TIMER_DIER_COMIE (1U << TIMER_DIER_COMIE_BIT) COMIE:COM 割り込みイネーブル
TIMER_DIER_CC4IE (1U << TIMER_DIER_CC4IE_BIT) CC4IE:キャプチャ/比較 4 割り込みイネーブル
TIMER_DIER_CC3IE (1U << TIMER_DIER_CC3IE_BIT) CC3IE:キャプチャ/比較 3 割り込みイネーブル
TIMER_DIER_CC2IE (1U << TIMER_DIER_CC2IE_BIT) CC2IE:キャプチャ/比較 2 割り込みイネーブル
TIMER_DIER_CC1IE (1U << TIMER_DIER_CC1IE_BIT) CC1IE:キャプチャ/比較 1 割り込みイネーブル
TIMER_DIER_UIE (1U << TIMER_DIER_UIE_BIT) UIE:更新割り込みイネーブル
ステータスレジスタ(TIMx_SR)
ビット番号
TIMER_SR_CC4OF_BIT [12] (rc_w0) CC4OF:キャプチャ/比較 4 オーバーキャプチャフラグ
TIMER_SR_CC3OF_BIT [11] (rc_w0) CC3OF:キャプチャ/比較 3 オーバーキャプチャフラグ
TIMER_SR_CC2OF_BIT [10] (rc_w0) CC2OF:キャプチャ/比較 2 オーバーキャプチャフラグ
TIMER_SR_CC1OF_BIT [9] (rc_w0) CC1OF:キャプチャ/比較 1 オーバーキャプチャフラグ
TIMER_SR_BIF_BIT [7] (rc_w0) BIF:ブレーク割り込みフラグ
TIMER_SR_TIF_BIT [6] (rc_w0) TIF:トリガ割り込みフラグ
TIMER_SR_COMIF_BIT [5] (rc_w0) COMIF:COM 割り込みフラグ
TIMER_SR_CC4IF_BIT [4] (rc_w0) CC4IF:キャプチャ/比較 4 割り込みフラグ
TIMER_SR_CC3IF_BIT [3] (rc_w0) CC3IF:キャプチャ/比較 3 割り込みフラグ
TIMER_SR_CC2IF_BIT [2] (rc_w0) CC2IF:キャプチャ/比較 2 割り込みフラグ
TIMER_SR_CC1IF_BIT [1] (rc_w0) CC1IF:キャプチャ/比較 1 割り込みフラグ
TIMER_SR_UIF_BIT [0] (rc_w0) UIF:更新割り込みフラグ
設定値
TIMER_SR_CC4OF (1U << TIMER_SR_CC4OF_BIT) CC4OF:キャプチャ/比較 4 オーバーキャプチャフラグ
TIMER_SR_CC3OF (1U << TIMER_SR_CC3OF_BIT) CC3OF:キャプチャ/比較 3 オーバーキャプチャフラグ
TIMER_SR_CC2OF (1U << TIMER_SR_CC2OF_BIT) CC2OF:キャプチャ/比較 2 オーバーキャプチャフラグ
TIMER_SR_CC1OF (1U << TIMER_SR_CC1OF_BIT) CC1OF:キャプチャ/比較 1 オーバーキャプチャフラグ
TIMER_SR_BIF (1U << TIMER_SR_BIF_BIT) BIF:ブレーク割り込みフラグ
TIMER_SR_TIF (1U << TIMER_SR_TIF_BIT) TIF:トリガ割り込みフラグ
TIMER_SR_COMIF (1U << TIMER_SR_COMIF_BIT) COMIF:COM 割り込みフラグ
TIMER_SR_CC4IF (1U << TIMER_SR_CC4IF_BIT) CC4IF:キャプチャ/比較 4 割り込みフラグ
TIMER_SR_CC3IF (1U << TIMER_SR_CC3IF_BIT) CC3IF:キャプチャ/比較 3 割り込みフラグ
TIMER_SR_CC2IF (1U << TIMER_SR_CC2IF_BIT) CC2IF:キャプチャ/比較 2 割り込みフラグ
TIMER_SR_CC1IF (1U << TIMER_SR_CC1IF_BIT) CC1IF:キャプチャ/比較 1 割り込みフラグ
TIMER_SR_UIF (1U << TIMER_SR_UIF_BIT) UIF:更新割り込みフラグ
イベント生成レジスタ(TIMx_EGR)
ビット番号
TIMER_EGR_BG_BIT [7] (w) BG:ブレーク生成
TIMER_EGR_TG_BIT [6] (w) TG:トリガ生成
TIMER_EGR_COMG_BIT [5] (w) COMG:キャプチャ/比較制御更新生成
TIMER_EGR_CC4G_BIT [4] (w) CC4G:キャプチャ/比較 4 生成
TIMER_EGR_CC3G_BIT [3] (w) CC3G:キャプチャ/比較 3 生成
TIMER_EGR_CC2G_BIT [2] (w) CC2G:キャプチャ/比較 2 生成
TIMER_EGR_CC1G_BIT [1] (w) CC1G:キャプチャ/比較 1 生成
TIMER_EGR_UG_BIT [0] (w) UG:更新生成
設定値
TIMER_EGR_BG (1U << TIMER_EGR_BG_BIT) BG:ブレーク生成
TIMER_EGR_TG (1U << TIMER_EGR_TG_BIT) TG:トリガ生成
TIMER_EGR_COMG (1U << TIMER_EGR_COMG_BIT) COMG:キャプチャ/比較制御更新生成
TIMER_EGR_CC4G (1U << TIMER_EGR_CC4G_BIT) CC4G:キャプチャ/比較 4 生成
TIMER_EGR_CC3G (1U << TIMER_EGR_CC3G_BIT) CC3G:キャプチャ/比較 3 生成
TIMER_EGR_CC2G (1U << TIMER_EGR_CC2G_BIT) CC2G:キャプチャ/比較 2 生成
TIMER_EGR_CC1G (1U << TIMER_EGR_CC1G_BIT) CC1G:キャプチャ/比較 1 生成
TIMER_EGR_UG (1U << TIMER_EGR_UG_BIT) UG:更新生成
キャプチャ/比較モードレジスタ 1(TIMx_CCMR1)
ビット番号
TIMER_CCMR1_OC2CE_BIT [15] (rw) OC2CE:出力比較 2 クリアイネーブル
TIMER_CCMR1_OC2PE_BIT [11] (rw) OC2PE:出力比較 2 プリロードイネーブル
TIMER_CCMR1_OC2FE_BIT [10] (rw) OC2FE:出力比較 2 高速イネーブル
TIMER_CCMR1_OC1CE_BIT [7] (rw) OC1CE:出力比較 1 クリアイネーブル
TIMER_CCMR1_OC1PE_BIT [3] (rw) OC1PE:出力比較 1 プリロードイネーブル
TIMER_CCMR1_OC1FE_BIT [2] (rw) OC1FE:出力比較 1 高速イネーブル
設定値
TIMER_CCMR1_OC2CE (1U << TIMER_CCMR1_OC2CE_BIT) OC2CE:出力比較 2 クリアイネーブル
TIMER_CCMR1_OC2M (0x3 << 12) OC2M[14:12] 3ビット: (rw) 出力比較 2 モード
TIMER_CCMR1_IC2F (0xF << 12) IC2F[15:12] 4ビット: (rw)
TIMER_CCMR1_OC2PE (1U << TIMER_CCMR1_OC2PE_BIT) OC2PE:出力比較 2 プリロードイネーブル
TIMER_CCMR1_OC2FE (1U << TIMER_CCMR1_OC2FE_BIT) OC2FE:出力比較 2 高速イネーブル
TIMER_CCMR1_IC2PSC (0x3 << 10) IC2PSC[11:10] 2ビット: (rw)
TIMER_CCMR1_CC2S (0x3 << 8) CC2S [9:8]:キャプチャ/比較 2選択
TIMER_CCMR1_CC2S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) CC2 チャネルは出力設定
TIMER_CCMR1_CC2S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) CC2 チャネルは入力設定、IC2 は TI2 にマップ
TIMER_CCMR1_CC2S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) CC2 チャネルは入力設定、IC2 は TI1 にマップ
TIMER_CCMR1_CC2S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) CC2 チャネルは入力設定、IC2 はTRC にマップ
TIMER_CCMR1_OC1CE (1U << TIMER_CCMR1_OC1CE_BIT) OC1CE:出力比較 1 クリアイネーブル
TIMER_CCMR1_OC1M (0x3 << 4) OC1M:出力比較 1 モード
TIMER_CCMR1_IC1F (0xF << 4) IC1F[3:0]:入力キャプチャ 1 フィルタ
TIMER_CCMR1_OC1PE (1U << TIMER_CCMR1_OC1PE_BIT) OC1PE:出力比較 1 プリロードイネーブル
TIMER_CCMR1_OC1FE (1U << TIMER_CCMR1_OC1FE_BIT) OC1FE:出力比較 1 高速イネーブル
TIMER_CCMR1_IC1PSC (0x3 << 2) IC1PSC:入力キャプチャ 1 プリスケーラ
TIMER_CCMR1_CC1S 0x3 CC1S:キャプチャ/比較 1 選択
TIMER_CCMR1_CC1S_OUTPUT TIMER_CCMR_CCS_OUTPUT CC1 チャネルは出力設定
TIMER_CCMR1_CC1S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 CC1 チャネルは入力設定、IC1 は TI1 にマップ
TIMER_CCMR1_CC1S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 CC1 チャネルは入力設定、IC1 は TI2 にマップ
TIMER_CCMR1_CC1S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC CC1 チャネルは入力設定、IC1 は TRC にマップ
キャプチャ/比較モードレジスタ 2(TIMx_CCMR2)
ビット番号
TIMER_CCMR2_OC4CE_BIT [15] (rw) OC4CE:出力比較 4 クリアイネーブル
TIMER_CCMR2_OC4PE_BIT [11] (rw) OC4PE:出力比較 4 プリロードイネーブル
TIMER_CCMR2_OC4FE_BIT [10] (rw) OC4FE:出力比較 4 高速イネーブル
TIMER_CCMR2_OC3PE_BIT [3] (rw) OC3PE:出力比較 3 プリロードイネーブル
TIMER_CCMR2_OC3CE_BIT [7] (rw) OC3CE:出力比較 3 クリアイネーブル
TIMER_CCMR2_OC3FE_BIT [2] (rw) OC3FE:出力比較 3 高速イネーブル
設定値
TIMER_CCMR2_OC4CE (1U << TIMER_CCMR2_OC4CE_BIT) OC4CE:出力比較 4 クリアイネーブル
TIMER_CCMR2_OC4M (0x3 << 12) OC4M:出力比較 4 モード
TIMER_CCMR2_IC4F (0xF << 12) IC4F:入力キャプチャ 4 フィルタ
TIMER_CCMR2_OC4PE (1U << TIMER_CCMR2_OC4PE_BIT) OC4PE:出力比較 4 プリロードイネーブル
TIMER_CCMR2_OC4FE (1U << TIMER_CCMR2_OC4FE_BIT) OC4FE:出力比較 4 高速イネーブル
TIMER_CCMR2_IC4PSC (0x3 << 10) IC4PSC:入力キャプチャ 4 プリスケーラ
TIMER_CCMR2_CC4S (0x3 << 8) CC4S:キャプチャ/比較 4選択
TIMER_CCMR2_CC4S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) CC4 チャネルは出力設定
TIMER_CCMR2_CC4S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) CC4 チャネルは入力設定、IC4 は TI4 にマップ
TIMER_CCMR2_CC4S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) CC4 チャネルは入力設定、IC4 は TI3 にマップ
TIMER_CCMR2_CC4S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) CC4 チャネルは入力設定、IC4 は TRC にマップ
TIMER_CCMR2_OC3CE (1U << TIMER_CCMR2_OC3CE_BIT) OC3CE:出力比較 3 クリアイネーブル
TIMER_CCMR2_OC3M (0x3 << 4) OC3M:出力比較 3 モード
TIMER_CCMR2_IC3F (0xF << 4) IC3F:入力キャプチャ 3 フィルタ
TIMER_CCMR2_OC3PE (1U << TIMER_CCMR2_OC3PE_BIT) OC3PE:出力比較 3 プリロードイネーブル
TIMER_CCMR2_OC3FE (1U << TIMER_CCMR2_OC3FE_BIT) OC3FE:出力比較 3 高速イネーブル
TIMER_CCMR2_IC3PSC (0x3 << 2) IC3PSC:入力キャプチャ 3 プリスケーラ
TIMER_CCMR2_CC3S 0x3 CC3S:キャプチャ/比較 3 選択
TIMER_CCMR2_CC3S_OUTPUT TIMER_CCMR_CCS_OUTPUT CC3 チャネルは出力設定
TIMER_CCMR2_CC3S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 CC3 チャネルは入力設定、IC3 は TI3 にマップ
TIMER_CCMR2_CC3S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 CC3 チャネルは入力設定、IC3 は TI4 にマップ
TIMER_CCMR2_CC3S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC CC3 チャネルは入力設定、IC3 は TRC にマップ
キャプチャ/比較イネーブルレジスタ(TIMx_CCER)
ビット番号
TIMER_CCER_CC4P_BIT [13] (rw) CC4P:キャプチャ/比較 4 出力極性
TIMER_CCER_CC4E_BIT [12] (rw) CC4E:キャプチャ/比較 4 出力イネーブル
TIMER_CCER_CC3NP_BIT [11] (rw) CC3NP:キャプチャ/比較 3 相補出力極性
TIMER_CCER_CC3NE_BIT [10] (rw) CC3NE:キャプチャ/比較 3 相補出力イネーブル
TIMER_CCER_CC3P_BIT [9] (rw) CC3P:キャプチャ/比較 3 出力極性
TIMER_CCER_CC3E_BIT [8] (rw) CC3E:キャプチャ/比較 3 出力イネーブル
TIMER_CCER_CC2NP_BIT [7] (rw) CC2NP:キャプチャ/比較 2 相補出力極性
TIMER_CCER_CC2NE_BIT [6] (rw) CC2NE:キャプチャ/比較 2 相補出力イネーブル
TIMER_CCER_CC2P_BIT [5] (rw) CC2P:キャプチャ/比較 2 出力極性
TIMER_CCER_CC2E_BIT [4] (rw) CC2E:キャプチャ/比較 2 出力イネーブル
TIMER_CCER_CC1NP_BIT [3] (rw) CC1NP:キャプチャ/比較 1 相補出力極性
TIMER_CCER_CC1NE_BIT [2] (rw) CC1NE:キャプチャ/比較 1 相補出力イネーブル
TIMER_CCER_CC1P_BIT [1] (rw) CC1P:キャプチャ/比較 1 出力極性
TIMER_CCER_CC1E_BIT [0] (rw) CC1E:キャプチャ/比較 1 出力イネーブル
設定値
TIMER_CCER_CC4P (1U << TIMER_CCER_CC4P_BIT) CC4P:キャプチャ/比較 4 出力極性
TIMER_CCER_CC4E (1U << TIMER_CCER_CC4E_BIT) CC4E:キャプチャ/比較 4 出力イネーブル
TIMER_CCER_CC3NP (1U << TIMER_CCER_CC3NP_BIT) CC3NP:キャプチャ/比較 3 相補出力極性
TIMER_CCER_CC3NE (1U << TIMER_CCER_CC3NE_BIT) CC3NE:キャプチャ/比較 3 相補出力イネーブル
TIMER_CCER_CC3P (1U << TIMER_CCER_CC3P_BIT) CC3P:キャプチャ/比較 3 出力極性
TIMER_CCER_CC3E (1U << TIMER_CCER_CC3E_BIT) CC3E:キャプチャ/比較 3 出力イネーブル
TIMER_CCER_CC2NP (1U << TIMER_CCER_CC2NP_BIT) CC2NP:キャプチャ/比較 2 相補出力極性
TIMER_CCER_CC2NE (1U << TIMER_CCER_CC2NE_BIT) CC2NE:キャプチャ/比較 2 相補出力イネーブル
TIMER_CCER_CC2P (1U << TIMER_CCER_CC2P_BIT) CC2P:キャプチャ/比較 2 出力極性
TIMER_CCER_CC2E (1U << TIMER_CCER_CC2E_BIT) CC2E:キャプチャ/比較 2 出力イネーブル
TIMER_CCER_CC1NP (1U << TIMER_CCER_CC1NP_BIT) CC1NP:キャプチャ/比較 1 相補出力極性
TIMER_CCER_CC1NE (1U << TIMER_CCER_CC1NE_BIT) CC1NE:キャプチャ/比較 1 相補出力イネーブル
TIMER_CCER_CC1P (1U << TIMER_CCER_CC1P_BIT) CC1P:キャプチャ/比較 1 出力極性
TIMER_CCER_CC1E (1U << TIMER_CCER_CC1E_BIT) CC1E:キャプチャ/比較 1 出力イネーブル
ブレークおよびデッドタイムレジスタ(TIMx_BDTR)
ビット番号
TIMER_BDTR_MOE_BIT [15] (rw) MOE:メイン出力イネーブル
TIMER_BDTR_AOE_BIT [14] (rw) AOE:自動出力イネーブル
TIMER_BDTR_BKP_BIT [13] (rw) BKP:ブレーク極性
TIMER_BDTR_BKE_BIT [12] (rw) BKE:ブレークイネーブル
TIMER_BDTR_OSSR_BIT [11] (rw) OSSR:RUN モードのオフ状態の選択
TIMER_BDTR_OSSI_BIT [10] (rw) OSSI:アイドルモードのオフ状態の選択
設定値
TIMER_BDTR_MOE (1U << TIMER_BDTR_MOE_BIT) MOE:メイン出力イネーブル
TIMER_BDTR_AOE (1U << TIMER_BDTR_AOE_BIT) AOE:自動出力イネーブル
TIMER_BDTR_BKP (1U << TIMER_BDTR_BKP_BIT) BKP:ブレーク極性
TIMER_BDTR_BKE (1U << TIMER_BDTR_BKE_BIT) BKE:ブレークイネーブル
TIMER_BDTR_OSSR (1U << TIMER_BDTR_OSSR_BIT) OSSR:RUN モードのオフ状態の選択
TIMER_BDTR_OSSI (1U << TIMER_BDTR_OSSI_BIT) OSSI:アイドルモードのオフ状態の選択
TIMER_BDTR_LOCK (0x3 << 8) ロック設定
TIMER_BDTR_LOCK_OFF (0x0 << 8) ロック設定:LOCK オフ
TIMER_BDTR_LOCK_LEVEL1 (0x1 << 8) ロック設定:LOCK レベル 1
TIMER_BDTR_LOCK_LEVEL2 (0x2 << 8) ロック設定:LOCK レベル 2
TIMER_BDTR_LOCK_LEVEL3 (0x3 << 8) ロック設定:LOCK レベル 3
TIMER_BDTR_DTG 0xFF
DMA 制御レジスタ(TIMx_DCR)
設定値
TIMER_DCR_DBL (0x1F << 8) (rw) DMA バースト長
TIMER_DCR_DBL_1BYTE (0x0 << 8) (rw) DMA バースト長:1転送
TIMER_DCR_DBL_2BYTE (0x1 << 8) (rw) DMA バースト長:2転送
TIMER_DCR_DBL_3BYTE (0x2 << 8) (rw) DMA バースト長:3転送
TIMER_DCR_DBL_4BYTE (0x3 << 8) (rw) DMA バースト長:4転送
TIMER_DCR_DBL_5BYTE (0x4 << 8) (rw) DMA バースト長:5転送
TIMER_DCR_DBL_6BYTE (0x5 << 8) (rw) DMA バースト長:6転送
TIMER_DCR_DBL_7BYTE (0x6 << 8) (rw) DMA バースト長:7転送
TIMER_DCR_DBL_8BYTE (0x7 << 8) (rw) DMA バースト長:8転送
TIMER_DCR_DBL_9BYTE (0x8 << 8) (rw) DMA バースト長:9転送
TIMER_DCR_DBL_10BYTE (0x9 << 8) (rw) DMA バースト長:10転送
TIMER_DCR_DBL_11BYTE (0xA << 8) (rw) DMA バースト長:11転送
TIMER_DCR_DBL_12BYTE (0xB << 8) (rw) DMA バースト長:12転送
TIMER_DCR_DBL_13BYTE (0xC << 8) (rw) DMA バースト長:13転送
TIMER_DCR_DBL_14BYTE (0xD << 8) (rw) DMA バースト長:14転送
TIMER_DCR_DBL_15BYTE (0xE << 8) (rw) DMA バースト長:15転送
TIMER_DCR_DBL_16BYTE (0xF << 8) (rw) DMA バースト長:16転送
TIMER_DCR_DBL_17BYTE (0x10 << 8) (rw) DMA バースト長:17転送
TIMER_DCR_DBL_18BYTE (0x11 << 8) (rw) DMA バースト長:18転送
TIMER_DCR_DBA 0x1F (rw) DMA ベースアドレス
TIMER_DCR_DBA_CR1 0x0 (rw) TIMx_CR1
TIMER_DCR_DBA_CR2 0x1 (rw) TIMx_CR2
TIMER_DCR_DBA_SMCR 0x2 (rw) TIMx_SMCR
TIMER_DCR_DBA_DIER 0x3 (rw) TIMx_DIER
TIMER_DCR_DBA_SR 0x4 (rw) TIMx_SR
TIMER_DCR_DBA_EGR 0x5 (rw) TIMx_EGR
TIMER_DCR_DBA_CCMR1 0x6 (rw) TIMx_CCMR1
TIMER_DCR_DBA_CCMR2 0x7 (rw) TIMx_CCMR2
TIMER_DCR_DBA_CCER 0x8 (rw) TIMx_CCER
TIMER_DCR_DBA_CNT 0x9 (rw) TIMx_CNT
TIMER_DCR_DBA_PSC 0xA (rw) TIMx_PSC
TIMER_DCR_DBA_ARR 0xB (rw) TIMx_ARR
TIMER_DCR_DBA_RCR 0xC (rw) TIMx_RCR
TIMER_DCR_DBA_CCR1 0xD (rw) TIMx_CCR1
TIMER_DCR_DBA_CCR2 0xE (rw) TIMx_CCR2
TIMER_DCR_DBA_CCR3 0xF (rw) TIMx_CCR3
TIMER_DCR_DBA_CCR4 0x10 (rw) TIMx_CCR4
TIMER_DCR_DBA_BDTR 0x11 (rw) TIMx_BDTR
TIMER_DCR_DBA_DCR 0x12 (rw) TIMx_DCR
TIMER_DCR_DBA_DMAR 0x13 (rw) TIMx_DMAR
License and Attribution: Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。
Arduino STM32 リファレンス 日本語版 に戻る