STM32 面接でよくある質問

1. STM32F1 と F4 の違いは何ですか?

異なるコア: F1 は Cortex-M3 コア、F4 は Cortex-M4 コア;
メイン周波数が異なります: F1 メイン周波数は 72MHz、F4 メイン周波数
は168MHz
; GPIO フリップ レートなど、設計は F1 よりも豊富で強力です。プルアップおよびプルダウン抵抗構成、ADC 精度など、
メモリ サイズ: F1 内部 SRAM 最大 64K、F4 は 192K (112+64+16)。

2. GPIO モードの導入

  • 1. GPIO_MODE_AIN アナログ入力: I/O ポートのアナログ信号 (電圧信号、非レベル信号) が内蔵周辺モジュールに直接アナログ入力されます。
  • 2. GPIO_MODE_IN_FLOATING フローティング入力: プルアップおよびプルダウン抵抗スイッチは切断され、入力信号は読み出される前にシュミット トリガーによってのみフィルタリングされます。
  • 3. GPIO_MODE_IPD プルダウン入力: プルアップと同じですが、IO を Low レベルにプルダウンするだけです。
  • 4. GPIO_MODE_IPU プルアップ入力: プルアップとは、プルアップ抵抗を介して IO ポートの不確実な信号を High レベルに引き上げることです。抵抗は電流制限器としても機能します。
  • 5. GPIO-MODE_OUT_OD オープンドレイン出力: P-MOS チューブは動作せず、N-MOS チューブのみが動作し、MCU は出力ローレベルのみを制御できます。
  • 6. GPIO_MODE_OUT_PP プッシュプル出力: P-MOS チューブと N-MOS チューブの両方が動作し、MCU は出力のハイ レベルとロー レベルを制御できます。
  • 7. GPIO_MODE_AF_OD 多重化オープン ドレイン出力: GPIO は他のペリフェラルとして多重化され、出力データ レジスタ GPIOx_ODR は無効で、出力の High および Low レベルは他のペリフェラルから来ます。
  • 8. GOIO_MODE_AF_PP 多重化プッシュプル出力: GPIO は他のペリフェラルとして多重化され、出力データ レジスタ GPIOx_ODR は無効で、出力の High および Low レベルは他のペリフェラルから来ます。

stm32 の GPIO 出力の知識ポイントのまとめ (GPIO の 8 つのモードと原則) - プログラマーが求めた

GPIOの使用法

1. クロックを有効にする: RCC APB2RSTR レジスタ HAL_RCC_GPIOC_CLK ENABLE();
2. 動作モードを設定する;
3. 出力状態を設定する: ODR、BSRR。

要約:

  • フローティング入力: 消費電力を削減するため。
  • プルアップとプルダウン: クランプ レベル、強化されたドライブ (電流増加)、抗干渉。
  • アナログ入力は、ADC などのアナログ電気信号です。
  • オープンドレイン出力: 通常は 0 のみを出力できますが、さまざまなペリフェラルレベルと完全に互換性があります。
  • オープンドレイン出力の多重化: 多重化とは、IO が通常の IO ではなく、SPI、UART などの特別な機能を備えた IO であることを意味します。
  • プッシュプル出力:駆動能力を向上させるためのものです。

stm32 入出力モードの選択と違い - プログラマー募集

3.シリアルポートの設定手順

(1) シリアルポートクロックイネーブル、GPIO クロックイネーブル
(2) シリアルポートリセット
(3) GPIO ポートモード設定

TX の GPIO 動作モードは次のとおりです: GPIO_Mode_AF_PP;//マルチプレックス プッシュプル出力
RX の GPIO 動作モードは次のとおりです: GPIO_Mode_IN_FLOATING;// フローティング入力

(4) シリアル ポート パラメータの初期化。ボー レート設定 (115200)、8 データ ビット、1 ストップ ビット、パリティ ビットなし、ハードウェア データ フロー制御なし、およびトランシーバ モードが含まれます。
(5) 割り込みを有効にし、NVIC を初期化します (この手順は、割り込みを有効にする必要がある場合にのみ必要です)
(6) シリアル ポートを有効にします
(7) 割り込み処理関数を書き込みます

4.I2C

I2C バス上でデータを送信するプロセスには 3 種類の信号がありますか?
(1) スタート信号:SCL がハイレベルのとき、SDA はハイレベルからローレベルにジャンプし、データの送信を開始します。
(2) 終了信号:SCL がハイレベルのとき、SDA はローレベルからハイレベルにジャンプし、データ送信を終了します。
(3) 応答信号:8 ビットデータを受信した後、データを受信した IC はデータを受信したことを示す特定の Low レベルのパルスをデータを送信する IC に送信します。CPUは被制御機器に信号を送信した後、被制御機器からの応答信号を待ち、応答信号を受信した後、状況に応じて信号を送信し続けるかどうかを判断します。応答信号が受信されない場合は、制御対象機器が故障していると判断します。

I2C 調停メカニズム?

I2C では、複数のマスターと複数のスレーブが可能です。2 つ以上のマスターデバイスが同時にバスに開始信号を送信し、データの送信を開始すると、競合が発生します。この競合を解決するには、I2C バス上での調停決定を行う必要があります。

I2C バス上の調停は、SCL ラインの同期と SDA ラインの調停の 2 つの部分に分かれています。簡単に言えば、「低レベル優先」の原則に従います。つまり、最初に低レベルを送信した人がバスの制御を取得します。

I2C バス アービトレーション メカニズム_i2c アービトレーション メカニズム_Aite ブログ-CSDN ブログ

5.どの SPI モードを使用するかを決定するにはどうすればよいですか?

(1) まずスレーブが要求する SCLK の極性、非動作時に低電位か高電位かを確認し、CPOL が 0 か 1 であることを確認します。

(2) スレーブ チップのデータシートのタイミング図から、スレーブ チップが SCLK の立ち下がりエッジでデータを収集するか、SCLK の立ち上がりエッジでデータを収集するかを確認します。

6. クロックシステム

STM32 には、HSI、HSE、LSI、LSE、PLL の 5 つのクロック ソースがあります。
①、HSI は高速内部クロック、RC 発振器で、周波数は 8MHz です。
②、HSE は高速外部クロックで、水晶/セラミック発振子または外部クロック ソースに接続でき、周波数範囲は 4MHz ~ 16MHz です。
③、LSI は低速内部クロック、RC 発振器、周波数は 40kHz です。
④、LSE は、周波数 32.768kHz の水晶振動子に接続された低速外部クロックです。
⑤. PLL はフェーズロックループ乗算器出力であり、そのクロック入力ソースは HSI/2、HSE、または HSE/2 として選択できます。周波数逓倍数は 2 ~ 16 倍まで選択できますが、最大出力周波数は 72MHz を超えないようにしてください。
 

7. STM32 の ADC システムの機能的特徴を簡単に説明してください。

(1) 12 ビット分解能
(2) 自動キャリブレーション
(3) プログラム可能なデータ アライメント (変換結果は 16 ビット データ レジスタでの左詰めまたは右詰めの保存をサポート)
(4) 単一および連続変換モード

8. STM32 割り込みとは何ですか?

外部割り込み、タイマー割り込み、DMA割り込み、UART割り込み、SPI割り込み、I2C割り込み、USB割り込み、ADC割り込み。

9. ARM v7 のアーキテクチャはどのサブバージョン (スタイル) に分割でき、どのような分野で使用されますか?

A、R、Mの3つ。
Contex-A シリーズは、高密度システム向けのアプリケーション プロセッサ コアです。トップレベルのマスターコントロールは携帯電話、タブレット、GPSで広く使用されており、モバイルデバイスチップの90%がarmを使用しています。arm9 と arm11 に対応し、どちらも Linux などのオペレーティング システムを実行できます。
リアルタイム アプリケーション向けの高性能コアの Contex-R ファミリ。主にハードディスクコントローラーや車両制御製品など、リアルタイム性が要求される場面で使用されます。
Contex-Mシリーズは、各種組み込みアプリケーション向けのマイコンコア(アドバンストマイコンに相当)です。主に産業および民生分野で使用されます。arm7 と同様に、大規模なオペレーティング システムを実行できません (uCos2 に似たリアルタイム オペレーティング システムのみを実行できます)。

10. STM32 のどのモデルを使用しましたか? 内部リソースは?

 組み込みエンジニアの面接質問セット - MCU_STM32_mcu 面接質問_Jiangzaijianghu のブログ - CSDN ブログ

イレブン、Systick ティック タイマー

SysTick は 24 ビットのダウン カウンタであり、SysTick を初期値に設定して有効にすると、システム クロック サイクルが経過するたびにカウント値が 1 ずつ減少します。0 までカウントすると、SysTick カウンタは自動的に初期値を再ロードしてカウントを継続し、内部 COUNTFLAG フラグがセットされて割り込みがトリガーされます (割り込みが有効な場合)。

システム クロックが 72Mhz であると仮定すると、SysTick の各増加は 1/9us になります。注: システムは 72MHz で 8 で分割されます。

12. NVIC 割り込み優先度管理 

CM3 コアは、16 個のコア割り込みと 240 個の外部割り込みを含む 256 個の割り込みをサポートし、256 レベルのプログラム可能な割り込み設定を備えています。ただし、STM32 は CM3 コアのすべてを使用するのではなく、その一部のみを使用します。STM32 には、16 個のコア割り込みと 68 個のマスカブル割り込みを含む 84 個の割り込みがあり、16 レベルのプログラム可能な割り込み優先順位を備えています。そして、この68個のマスカブル割り込みをよく使いますが、STM32の68個のマスカブル割り込みは、STM32F103シリーズでは60個しかありません(107シリーズでは68個のみ)。

STM32 では、割り込みをグループ 0 ~ 4 の 5 つのグループに分けています。

 ここで注意すべき点が 2 つあります。

まず、2 つの割り込みのプリエンプション優先順位と応答優先順位が同じ場合、どちらの割り込みが最初に発生するかを確認するために最初に実行されます。

第 2 に、高優先度のプリエンプティブ優先度は、進行中の低プリエンプティブ優先度の割り込みに割り込むことができます。同じ優先度の割り込みをプリエンプトする場合、高優先度の応答優先度は低応答優先度の割り込みに割り込むことはできません。

13. IO ポート外部割り込みを使用する一般的な手順

1. IO ポートを入力として初期化します。
2. IO ポートの多重クロックをオンにし、IO ポートと割り込みラインのマッピング関係を設定します。
3. オンライン割り込み(EXTI)の初期化、トリガ条件の設定などを行います。
4. 割り込みグループ (NVIC) を設定し、割り込みを有効にします。
5. 割り込みサービス関数を作成します。

14. タイマー設定手順

1. タイマークロックを有効にします。関数呼び出し: RCC_APB1PeriphClockCmd();
2. タイマーを初期化し、ARR と PSC を構成します。関数呼び出し: TIM_TimeBaseInit();
3. タイマー割り込みを有効にし、NVIC を設定します。関数の呼び出し: void TIM_ITConfig(); NVIC_Init();
4. タイマーを有効にします。関数呼び出し: TIM_Cmd();
5. 割り込みサービス関数を書き込みます。関数を呼び出します: TIMx_IRQHandler()。

15. その他のコンテンツ

1. CPU がハードディスクから直接データを読み取ることができず、最初にメモリを介してデータを読み取るのはなぜですか

CPU がハードディスクから直接データを読み取ることができない理由は、ハードディスクと CPU の速度に大きな差があるためです。ハードドライブは、データの読み取りまたは書き込みが可能になる前に、プラッターを回転させ、読み取り/書き込みヘッドを移動させるのに時間がかかる機械デバイスです。これに対して、CPU の処理速度は非常に速く、命令の実行はナノ秒以内に完了します。したがって、CPU がハードディスクからデータを直接読み取ると、CPU の処理速度がハードディスクの速度によって制限され、システム全体のパフォーマンスが大幅に低下します。

2. CPUメモリ仮想メモリディスク/ハードディスクの関係

CPUはデータを判断し、論理処理します データ自体を保存することはできません このとき、CPUは内部メモリからデータを取り出して論理計算を行います 内部メモリにデータがない場合は、ハードディスクからデータを読み出します内部メモリに保存してデータを処理します。

人間が食事をするのと同じように、CPU が人間、メモリがお茶碗、ハードディスクが炊飯器です。

CPU プロセスが待機すると、メモリのオーバーヘッドが増加します。メモリが不足すると、仮想メモリが使用され、仮想メモリが増加します。このとき、ディスク IO のオーバーヘッドが増加し、システム状態が悪化します。 sy% が増加し、CPU オーバーヘッドが増加します。データが十分でない場合は、ディスクからデータがフェッチされます。

3. CPUの内部構造

CPU:中央処理装置は、コンピュータのコンピューティング コアおよび制御コアです。その機能は主に、コンピュータの命令を解釈し、コンピュータ ソフトウェアでデータを処理することです。CPUは演算装置、コントローラ、レジスタ、キャッシュ、およびそれらの間のデータ、制御、ステータスを実現するバスから構成され、メモリ:外部メモリと内部メモリに分かれ、データ(バイナリで格納)を格納するために使用され
ます。モード);
入力デバイス:ユーザーがコンピューターに命令を出すためのデバイス;
出力デバイス:コンピューターとユーザーが結果を報告するためのデバイス。

4. ボーレートとは何ですか、両方のボーレートが同じである理由、および高ボーレートと低ボーレートの違いは何ですか

通信におけるボーレート:1秒間に送信するビット数、つまり通信速度を指します。

通信において、ボーレートとは、1 秒あたりに送信されるビット数を指します。双方のボーレートが異なる場合、送信側と受信側の間でデータ伝送速度が一致しないという問題が発生します。

具体的には、送信側のボー レートが受信側のボー レートよりも高い場合、送信側は受信側が処理できる速度よりも速くデータを送信する可能性があり、その結果、データ損失や送信エラーが発生する可能性があります。送信側のボー レートが受信側のボー レートよりも低い場合、受信側はすべてのデータを時間内に受信できない可能性があり、その結果、データ送信が非効率になったり、データが損失したりすることがあります。

ボーレートが高いということは、1 秒あたりのビット数が多くなり、データ転送速度が速くなるということです。

ボー レートが高い場合、伝送レートが増加するため、信号の立ち上がりエッジと立ち下がりエッジの変化が速くなり、その結果、ボー レートが低くなると伝送距離が制限されます。

5. ROMとRAMの概念

ROM: 読み取り専用メモリ。長所: 大容量、電源を切っても失われない; 短所: 読み取り速度が遅い。実際、「読み取り専用」の定義は正確ではありません (携帯電話の場合は 8+128G など)。ここで、8 は RAM を指し、128 は ROM を指します。ここでの ROM は、EMMC、UFS、NAND フラッシュなど、すべて書き込み可能なフラッシュ (消去 –> 書き込むアドレスまたはセクターの送信 –> データの書き込み) です。歴史的な理由から、フラッシュは今でも ROM と呼ばれています。

RAM: ランダム アクセス メモリ。長所: 高速、CPU と直接通信; 短所: 電源を切ると失われる、容量が小さい。
組み込み開発における RAM と ROM の分析_組み込み RAM と rom_CinzWS のブログ - CSDN ブログ

6. セクター、ブロック、ページ、クラスターの概念

埋め込み 100 の質問 (85): セクター ブロック ページ クラスターの概念_Role Life のブログ - CSDN ブログ

セクター:ハードディスクの最小のアドレス指定単位 (ハードディスクのような外部記憶装置の最小の検索部分。つまり、「ハードディスクを取得する」場合、一度に少なくとも 1 セクターを「取得」します)。クラスター: セクター
空間比較によるもの。小さくても数が多くても対処が難しいため、オペレーティング システムは複数のセクターを組み合わせてより大きな単位を形成し、この単位で全体的な操作を実行します。この単位は、Windows の FAT、FAT32、NTFS ファイル システムではクラスタと呼ばれ、Linux の Ext4 などのファイル システムではブロックと呼ばれます。各クラスターまたはブロックには、2、4、8、16、32、64...2n セクターが含まれる場合があります。
ページ:オペレーティング システムの最小の基本単位。

つまり、ファイルを読み取るときの最小単位はブロックです。セクターはハードディスク用であり、ディスク ブロックはファイル システム用です。したがって、ファイルシステムでファイルを操作する最小単位はブロックであり、ディスクの基本単位はセクタです。

メモリ ページング メカニズムが使用されている場合、メモリは 4K サイズのページに分割されるため、オペレーティング システムはメモリを扱うときにページの概念のみを持っています。これも仮想ユニットです。

要約すると、オペレーティング システムはメモリを操作するための基本単位としてページを使用し、ファイル システムはディスクを操作するための基本単位としてブロックを使用し、ディスク自体は読み取りと書き込みの基本単位としてセクターを使用します。
Linux におけるセクタ、ブロック、ページの違い + Linux ファイルシステムにおける i ノードと高速バッファの役割

16. 参考コンテンツ

埋め込みインタビューのナレッジ ポイントの概要 - STM32 記事_stm32 プログラミングの質問_Juyou Zhicheng ブログ-CSDN ブログ

ネットワーク全体で最も完全な MCU インタビュー エクスペリエンス (STM32F103 に基づく)_MCU インタビューの質問_16 兄弟のブログ - CSDN ブログ

STM32-インタビューの質問と回答_stm32 MCU の回答の質問_Flying Mavericks ブログ-CSDN ブログ

おすすめ

転載: blog.csdn.net/qq_41709234/article/details/131359345