タイマ割り込みを設定する為の、プリスケーラ値の自動計算
この記事では、STM32F401のタイマ割り込みを設定する為の、プリスケーラ値を自動計算する。
入力:
・APB1 , APB2の値[MHz]
・設定したい割り込み間隔(時間)[ms]
・Counter Periodの値
出力:
・割り込み周波数[Hz]
・Prescalerの値
1. Prescalerの自動計算
・入力
APB1 or APB2 = [MHz]
設定したい割り込み間隔(時間) = [ms]
Counter Period= - 1
ーーーーーーーーーーーーーーーーーーーー
・出力
割り込み周波数 = [Hz]
Prescaler = - 1
ーーーーーーーーーーーーーーーーーーーー
計算の詳細については下記記事を参照
→STM32マイコン_9(タイマ割り込み:LED点滅) - Project_OKI’s diary
4. 計算プログラム
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>タイマ割り込みの計算</title> <!-- UI kitの追加 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.6.18/dist/css/uikit.min.css" /> <!-- UIkit JS --> <script src="https://cdn.jsdelivr.net/npm/uikit@3.6.18/dist/js/uikit.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/uikit@3.6.18/dist/js/uikit-icons.min.js"></script> <!-- JQuaryの追加 --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <style> </style> </head> <body> <h1> 目的 </h1> <p>STM32F401のタイマ割り込みを設定する為の、プリスケーラ値を算出するサイト</p> <h2>内容</h2> <p> APBの値、設定したい割り込み間隔(時間)、Counter Periodの値から、 設定したい割り込み間隔に設定するのに必要なPrescalerの値を算出します。</p> <p> ※Presclaer及びCounter Periodは、0から16bit(65535)の範囲の整数で設定できますが ここでは特に制限していません。</p> <p>入力</p> <p> APB1 or APB2 = <input type"text" size="15" id="APB" value="16"> [MHz]</p> <p> 設定したい割り込み間隔(時間) = <input type "text" size="15" id="time" value="1">[ms]</p> <p> Counter Period= <input type="text" size="15" id="cntperiod" value="10"> - 1</p> <p>出力</p> <p> 割り込み周波数 = <input type "text" size="15" id="freq" value="1000">[Hz]</p> <p> Prescaler = <input type "text" size="15" id="prescaler" value="1600"> - 1</p> <!-- test.js(javascript)ファイルの読み込み --> <script type="text/javascript"> //変数宣言 $("#APB").change(PrescalerCalc); $("#time").change(PrescalerCalc); $("#cntperiod").change(PrescalerCalc); ///関数の作成 /** ************************************************************** */ /** * Prescaler算出 * @param : none * @return : none */ /** ************************************************************** */ function PrescalerCalc() { ///変数宣言 let lfreqValue; ///< 設定したい割り込み間隔[Hz] let lprescalerValue; ///< Prescalerの値 /// 設定したい割り込み間隔[Hz]の算出 /// 設定したい割り込み間隔[Hz] = 1/設定したい割り込み時間[s] lfreqValue = 1 / $("#time").val() * 1000; ///prescalerの算出 /// 割り込み間隔[Hz] = APB1[Hz] /{(Counter Period + 1)*(Prescaler + 1)} /// Prescaler = APB1[Hz]/{(Counter Period + 1)*割り込み間隔[Hz]} lprescalerValue = $("#APB").val() * 1000000 / (($("#cntperiod").val()) * lfreqValue); /// 計算の出力 $("#freq").val(lfreqValue); $("#prescaler").val(lprescalerValue); } </script> </body> </html>
HTMLの基本の参考:
HTMLのidとは?使い方やclassとの違いについても解説 | 侍エンジニアブログ
【HTML】id属性とは? 使い方と特徴を解説 | ZeroPlus Media
・Document: querySelector() メソッド - Web API | MDN
関連記事
Project OKI過去のブログ一覧とか - Project_OKI’s diary
・HTML,CSS,Javascript1(環境設定:VSCodeの導入) - Project_OKI’s diary
・HTML,CSS,Javascript2(HTMLでホームページのタイトル設定と段落作成) - Project_OKI’s diary
・HTML,CSS,Javascript3(タグについて) - Project_OKI’s diary
・HTML,CSS,Javascript4(属性による機能追加について) - Project_OKI’s diary
・HTML,CSS,Javascript5(装飾:CSSの追加) - Project_OKI’s diary