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 を行き来する必要がない状況に非常に適していますが、そのソース コードは一時フォルダーにあります。 、以下に示すように:
この方法には、複雑なプロジェクトの場合、いくつかの欠点がある可能性があります。