STM32 インプットキャプチャ作業プロセス (例としてチャンネル 1)
作業プロセスを 1 つの文で要約します。TIMx_CHxでエッジ信号を検出することにより、エッジ信号が遷移するとき (立ち上がりエッジ/立ち下がりエッジなど)、現在のタイマー値( TIMx_CNT )が対応するキャプチャ/比較レジスタ ( TIMx_CCRx )に保存されます。キャプチャを完了します。
ステップ 1 インプットキャプチャフィルターを設定します (例としてチャンネル 1)
ステップ 2: インプットキャプチャ極性を設定します (例としてチャンネル 1)
ステップ 3: インプットキャプチャマッピングチャンネルを設定します (例としてチャンネル 1)
ステップ 4: インプットキャプチャディバイダを設定します (例としてチャンネル 1)
typedef struct
{
uint16_t TIM_Channel; //捕获通道1-4
uint16_t TIM_ICPolarity; //捕获极性
uint16_t TIM_ICSelection; //映射关系
uint16_t TIM_ICPrescaler; //分频系数
uint16_t TIM_ICFilter; //滤波器
} TIM_ICInitTypeDef;
TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM5_ICInitStructure.TIM_ICFilter = 0x00;
TIM_ICInit(TIM5, &TIM5_ICInitStructure);
void TIM_OCxPolarityConfig ( TIM_TypeDef * TIMx , uint16_t TIM_OCPolarity ) ;
uint32_t TIM_GetCapture1( TIM_TypeDef * TIMx ) ;
入力キャプチャの一般的な構成手順は次のとおりです。
① チャネルに対応するIOのタイマとクロックを初期化します。
② IOポートを初期化します。モードは入力です: GPIO_Init ();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD ; //PA0入力
③タイマーARR 、PSCの初期化
TIM_TimeBaseInit ();
④インプットキャプチャチャネルの初期化
TIM_ICInit ();
⑤キャプチャ割り込みを有効にしたい場合は、
TIM_ITConfig ();
NVIC_Init ();
⑥タイマーを有効にする: TIM_Cmd ();
⑦割り込みサービス関数を書きます: TIMx_IRQHandler ();
実験目的:信号のパルス幅を測定する
重要なコード:
タイマー.c:
main.c: