STM32 マイクロコントローラーはシリアル ポート経由で 16 進プログラムを書き込みます

    以前、STM32 最小プログラム マイクロコントローラーを購入しました。シリアル ポート方式を使用して 51 個のマイクロコントローラーをダウンロードしていました。ここでも、シリアル ポート方式で STM32 マイクロコントローラーを書き込みました。USB TO TTL ツールが必要です。

    USB TO TTL ツールは、もう一方の端が接続であることを除いて、U-disk ツールに似ています。通常、コンピュータは自動的にドライバをインストールします。コンピュータに接続されていてもシリアル ポート番号が認識できない場合は、の場合は、CH340 ドライバーをインストールする必要があります。

    この USB TO TTL ツールには、3V3、RXD、TXD、および GND の 4 本のワイヤが必要です。3V3、A9、A10、マイコンのGNDにそれぞれ接続します。

    マイクロコントローラーには BOOT0 という別の設定があります。以下に示すように、ジャンパーを 1 側に接続し、BOOT1 を 0 側に接続する必要があります。

    A9 と A10 はシリアル ポートへのデータの送受信に使用されます。ここでは簡単なはんだ付けを行います。 

    STM32 MCU にプログラムをダウンロードするには、FlyMcu プログラムも必要です。このプログラムは非常に小さいので、さまざまな場所からダウンロードできます。開いた後のインターフェイスは次のとおりです:

    ①シリアルポートCOM6はシングルチップマイコンによりUSB TO TTLに接続されており、コンピュータに接続すると自動的に認識され、ボーレートもデフォルトとなります。ここで認識されない場合は、CH340ドライバーがインストールされているか確認してください。

    ② 2 番目は照明プログラムです。これはコンパイルされた hex ファイルです。

#include "stm32f10x.h"

void Delay()
{
  unsigned int i,j;
	for(i=0;i<1000;i++)
	  for(j=0;j<1000;j++);
}

void LED_Config()
{
    GPIO_InitTypeDef GPIO_InitStructure;                 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); 
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;             
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
    GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}

int main(void)
{
	LED_Config();
	while(1)
	{
	    GPIO_SetBits(GPIOC, GPIO_Pin_13);
		Delay();
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);
		Delay();
	}
}

    最小プログラムのシングルチップマイコンで、1 つは電源管理用の LED、もう 1 つは PC13 ポートに接続されており、PC13 ポートの出力にハイレベルとローレベルを出力し、点滅効果を得るために遅延させるプログラムを使用します。プログラムは標準ライブラリを使用します。

     ③ プログラミング後に確認して実行、つまりダウンロード後に実行します。

     ④ 4 番目のオプションを選択します: DTR ロー レベル リセット、RTS ハイ レベルをブートローダーに入力

     ⑤ プログラミングを開始し、クリックしてプログラムをマイコンにダウンロードします。

     ダウンロードが成功すると、MCU プログラムが実行され、緑色の LED が点滅します。

     注目すべき点は、プログラムをダウンロードした後、追加の操作を行わずにすぐに実行され、BOOT0 を 0 側に切り替える必要がなく、リセット ボタンを押す必要もありません。(電源をオフにした後、再度電源をオンにし、プログラムを実行するには、まず BOOT0 を 0 に切り替えてから、リセットを押す必要があります)

    ここでプログラムをダウンロードするのが通常なので、動作に問題はないかもしれませんが、クリックしてプログラミングを開始しようとすると、MCU がプログラムをダウンロードせず、FlyMcu ツールが常に接続されていると表示され、最後に失敗します。この種のハードウェア問題のトラブルシューティングは非常に困難です。どこに問題がないのかがまったくわからないため、この設定とその構成を確認し続けることしかできません。ここでもこの問題がありました。シリアルケーブルの接続ミスを疑い始めましたが、何度も確認した結果、接続ミスではありませんでした。また、BOOT0とBOOT1のジャンパキャップの設定が間違っているのではないかと思い、何度も交換し、リセットボタンを押しましたが、変化はありませんでした。最後に、問題を FlyMcu ツールの設定に移しましたが、実際、ここで問題が発生する可能性がある唯一の点は、DTR および RTS レベル設定のドロップダウン選択です。最後に、MCU のピンヘッダに問題を付けました。元々はピンヘッダを使用していましたが、すべてのピンを半田付けせず、修正してもらいました。3 その後、ピンヘッダを取り外し、A9 とオスを直接接続しました。 、A10、正常に焼き付けられ、プログラムは正常に実行されます。最後に、ピン ヘッダーを再度取り付け、A9 ポートと A10 ポートをはんだ付けし、再度確認すると、プログラミングが再び成功します。今回の教訓は、ピン ヘッダーが対応する回路基板の穴に挿入されていても導通しない可能性があるということです。

おすすめ

転載: blog.csdn.net/feinifi/article/details/132328389