タスクの目的: CubeMX ソフトウェアで PWM 信号を出力するようにタイマーを設定する方法をマスターします。
タスクの内容: PWM 信号を使用して、開発ボード上のインジケーター LED を制御します。PWM 周期を 20 ms に設定し、デューティ サイクルは 0% から始まり、ステップは 10% です。100% まで増分した後、0% から開始してこのプロセスを繰り返します。デューティ サイクル変更の時間間隔は 100 ミリ秒です。
タスクの遂行:
1. デザインアイデア
デューティ サイクル Duty とステップ値 Step の 2 つの変数を定義します。デューティ サイクルは 0 から 100% まで段階的に増加し、ステップ比は 10%、ステップ時間間隔は 100 ms です。PWM信号の周期は20ms、タイマ14のタイミングクロックTIM2_CLKは84MHz、プリスケーラ係数PSCは84−1に設定可能、オートリロード値ARRは20000−1である。
デューティサイクルは0から始まるため、キャプチャ/コンペアレジスタTIM14_CCR1の初期値を0に書き込み、while(1)ループ内でキャプチャ/コンペアレジスタ設定マクロ関数__HAL_TIM_SetCompare()を呼び出してレジスタの内容を変更します。 、 0 から始まり、徐々に増加し、プロセスを繰り返します。
2. 導入プロセス
ボードを使用すると、時間厳守のアトム エクスプローラーになります。
最初のステップはシステムクロックを設定することです
ステップ 2: ピンを構成する
PF9 は LED ライトと TIM14 の多重化端子ですので、TIM14 を PWM のタイマーとして設定します。
3 番目のステップは、タイマー TIM14 を設定することです。
TIM14 は APB1 バスに接続されており、APB1 バスのクロックは 84MHz です。PWM の周期は 20ms なので、PSC=84-1、ARR=20000-1、デューティ サイクル パルス=0 に設定し、プリロード機能を有効にします。
4 番目のステップ、コードの生成
5番目のステップ、コードを書く
/* USER CODE BEGIN 2 */
uint16_t Duty=0;
uint16_t step=2000;//定义占空比和步进值 step=20000*10%=2000
HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
for(Duty=0;Duty<=20000;Duty=Duty+step)
{
__HAL_TIM_SetCompare(&htim14,TIM_CHANNEL_1,Duty);
HAL_Delay(100);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
操作結果:
プログラムをコンパイルおよびリンクして実行可能コードを生成し、ST-Link エミュレータを介して開発ボードにダウンロードします。インジケータ LED が消灯状態から始まり、徐々に明るさが増していくのが確認でき、このプロセスを繰り返します。