STM32F103インプットキャプチャを実現

目的:エッジ信号の捕捉及び適時を達成するために、計算されたパルス幅、周波数、または他の機能として有用です。

TIM8:周辺機器を必要とします

需要:入力周波数TIM8_CH2を測定します。

操作:

  1.設定TIM8周辺機器;

  2. 2つの時間間隔の立ち下がりエッジを読みます

 

1.相関関数を書きます

 

// IOポート構成
ボイドIO_Init(ボイド)
{
 RCC-> APB2ENR | = << 1 4; //クロックイネーブルGPIOC

 GPIOC-> CRL&= 0X0FFFFFFF; // GPIOのPC7の構成クリア;
 GPIOC-> CRLを| = 0x40000000から; // PC7フローティング入力
}

//設定タイマ8

インプットキャプチャモードに設定//タイマー8
// TIM8クロックで開いAPB2
//設定分割1MHzのカウント値65535
// CH2を、有効IC2の
// CCR2可能にする
空隙TIM8_INIT(U16のARRを、U16のPSC ){
 
 RCC-> APB2ENR | = 0x00002000; //クロックTIM8を有効にします
 TIM8-> ARR = ARR;
 TIM8-> = PSC PSC;
 
 TIM8-> CCMR1 | << = 8 1; IC2の//はCH2にマッピングされる
 TIM8-> CCMR1 | << 10 = 0; //インプットキャプチャIC1予備無し分割
 TIM8-> CCMR1 | = 0 << 12 ; // 無入力キャプチャフィルタ
 
 TIM8-> CCER | = 0 << 5 ; // エッジキャプチャ
 TIM8-> CCER | = 1 << 4 ; // インプットキャプチャことができます有効にすると、キャプチャCCR2
 
 TIM8-> CR1&=〜(1 << 0); // 近いタイマー8;
}

 

//パルス幅時間の読み
int型のスピード(無効){          
 U16のTEMP1、TEMP2、TEMPを、
 TIM8-> SR = 0; //フラグのクリア
 TIM8-> CR1 | = 0X01を; //タイマ8を起動し、
 しばらく(! (TIM8-> SR&0×04)) ; // IC2の最初の立ち上がりエッジの状態を読み取る
 TEMP1 = TIM8-> CCR2を; //バッファのデータを読み取り
 ながら((TIM8-> SR&0x04の !)); // 読み取り状態IC2 2番目の立ち上がりエッジ
 TEMP2 = TIM8-> CCR2; //読み取りバッファデータ
 TIM8-> CR1&=〜(1 << 0); // 近いタイマー8;
 IF(TEMP1 <のTEMP2)
  TEMP = temp2- TEMP1、
 他のIF(TEMP1>のTEMP2)
  TEMP =(0xFFFFの-TEMP1)+のTEMP2;
 他の
  TEMP = 0; // F =電源のt // tの6/7 * 10単位は、米国がされて
 
 戻るTEMP; //戻ります時間単位米国
}

2.機能

  主な機能IOとTIM8に配置され、あなたは米国で、時間の関数、時間を計測読み出し時間を達成するための関数を呼び出すことができます。

  あなたは短い時間をしたい場合は、現在使用の1MHzを分割し、分周率を変更することができます。

 

おすすめ

転載: www.cnblogs.com/ctu11/p/11520762.html