2019年6月5日
なぜバージョンを登録し、シリアルポートの初期化関数は、2つのパラメータPCLK2および結合をとり
、ライブラリ機能バージョン間だけつのパラメータをバインド:
開発者ガイドのレジスタバージョンから次の統合:
ボーレートが計算されます
ときOVER8 = 0とき
- Tx / Rxはボーレートのですか?
- fPCLKxは、シリアルクロックです
- USART2ためPCLK1〜5
- USART1とUSART6ためPCLK2
- USARTDIV固定小数点符号なし
ボーレートレジスタUSART_BRR
各シリアルポートはSTM32F4を有するボーレートはUSART_BRRレジスタ、
32ビット、上位16ビットが予約されています
- 仮数は整数部分であります
- 画分は、* 16(OVER8 = 16を掛けたときに乗じ0、OVER8 = 1がどのくらいかわからない)小数部であります
ボーレート計算例
1 115200のシリアルボーレートとして設定されているものと、及び84MのPCLK2クロック(すなわちAPB2バスクロック周波数)は
USARTDIVを見つけます。
USARTDIV
= fpCLK2 / 16 /ボー
= 84000000/16/115200
= 45.572
従って、
45の整数部分、DIV_Mantissa = 45 = 0x2D
0.572の小数部分、DIV_Fraction = 0.572×16 = 9.152 = 0x09の
OVER8ビット
受信機がビットオーバーサンプリング設定:OVER8ビットを、
ビットは、USART_CR1内部のレジスタに設定されている
OVER8 = 0オーバーサンプリングの16倍を使用した場合と、受信機クロック、高精度、優れたフォールトトレランスの耐性を増加させることができます。
OVER8より高速を得ることができる= 1の場合。
我々は一般的に、より良いフォールトトレランスのために、導入されている以下のOVER8 = 0で始まり、OVER8 = 0に設定します。
OVER8の詳細については、「STM32F4xx中国のリファレンス・マニュアル」、第26.3.3を参照してください。
結論
ボーレートはPLKであり、いくつかの他の値は、一緒に決定レジスタ
正確、ボーレート、ボー・レートがUSART_BRRを登録し、対応するクロック周波数が上記式OVER8ビットのUSART_CR1のPCLKレジスタによって決定されます。
バージョン・レジスタに渡された計算に関与するパラメータとしてPCLKの値
ライブラリ関数バージョンは、クロック周波数が他の手段によって得ることができる、それが直接ボーレートを設定することが可能である
、すなわち
//ライブラリ版空隙uart_init(U32は、結合)
uart_initを無効(U32のPCLK2、U32バインド )// バージョン登録
パラメータとしてバインドする場合、これらの二つの機能を、考えることができる効果は同等です
ます。https://www.jianshu.com/p/cb35cb921a4aで再現