Proteus と keil-arm コンパイラを組み合わせてシミュレーション用の STM32 MCU プロジェクトを構築

    Proteus は設計図とソース コードを直接作成できますが、ソース コードのコンパイルには keil-mdk のインストール後に付属するコンパイラーである keil-arm コンパイラーの助けが必要です。

    主に LED ライトの点滅効果を作成する完全な例を以下に示します。

    新しいプロジェクトを作成してパスを指定し、回路図と PCB レイアウトがデフォルトで選択されます。最後にプロジェクト ウィザードを作成するときに、次を選択します。 ファームウェア プロジェクトの作成:

     ハードウェア シリーズとして Cortex-M3 を選択し、コントローラー タイプとして STM32F103C6 を選択します (他のタイプでは、[コンパイラー] ドロップダウン オプションが表示されない場合があります)。コンパイラー タイプのオプションがない場合は、背面にある [コンパイラー] ボタンをクリックして、Keil を選択します。ポップアップ ボックスで「for ARM」を選択し、keil - mdk インストール用の ARM パスを指定します。

    この方法で生成されたプロジェクトには独自のソース コードがあり、ソース コードの構造は次のとおりです。

 

    このソースコードには標準ライブラリ、スタートアップファイル、コアファイルも多く付属していますので、直接コンパイルしても問題ありません。

 

     標準ライブラリの内容は豊富ですが、一部の初期化関数コードがここにないため、レジスタを操作して点灯動作を実現する必要があります。

    以下に示すように、GPIOA の GPIO_Pin_5 ポートをレベル出力ポートとして使用し、レジスタを操作してクロックを有効にする簡単なコードです。

#include <stm32f103x6.h>
#include <stm32f1xx.h> 
 
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 
 
#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C 
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)
 
#define LED0 PAout(5) // PA5 
 
void Delay_nms(unsigned int time)
{    
   unsigned int i=0;  
   while(time--)
   {
      i=12000;  
      while(i--) ;    
   }
}
 
void LED_Init(void)
{   
   RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // clock enable
   GPIOA->CRL &= 0XFF0FFFFF;  //PA5
   GPIOA->CRL |= 0X00300000;  //PA5 
   GPIOA->ODR |= 1<<5;        //PA5 
}

int main (void)
{    
   LED_Init(); 
   while (1)
   {
      LED0 = 0;
      Delay_nms(50); 
      LED0 = 1;
      Delay_nms(50); 
   }
}

    プロジェクトのソース コードは正常にビルドされました。

    次に、発光ダイオードと抵抗を回路図に直接追加して接続し、シミュレーションを開始します。

 

    以前のソース コードがビルドされており、LED を追加するだけで、ここにある回路図をシミュレートできます。効果は次のとおりです。

 

    シミュレーション、回路図、およびソース コードを構築するこの方法は、シングルチップ マイクロコンピューターがなく、Keil と Proteus を行き来する必要がない状況に非常に適していますが、そのソース コードは一時フォルダーにあります。 、以下に示すように:

 

    この方法には、複雑なプロジェクトの場合、いくつかの欠点がある可能性があります。 

おすすめ

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