Proteus模擬執行stm32程式

時雨竭漁發表於2020-11-10

一、用MDK建立一個工程檔案
①新建一個工程檔案,配置並引入韌體庫
在這裡插入圖片描述
②在 USER 資料夾下新建一個 bsp_led.c 檔案

// bsp: board support package 板級支援包
#include "bsp_led.h"

//微秒級的延時
void delay_us(uint32_t delay_us)
{    
  volatile unsigned int num;
  volatile unsigned int t;
 
  
  for (num = 0; num < delay_us; num++)
  {
    t = 11;
    while (t != 0)
    {
      t--;
    }
  }
}

//毫秒級的延時
void delay_ms(uint16_t delay_ms)
{    
  volatile unsigned int num;
  for (num = 0; num < delay_ms; num++)
  {
    delay_us(1000);
  }
}

void LED_GPIO_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStruct; //定義GPIO_InitTypeDef結構體
	
	//開啟時鐘
	//RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	//配置成員,變為輸出模式
	/*綠燈*/
	GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN; //配置位(I/O口)
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //推輓輸出
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //配置輸出速度
	//GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 引數一:埠,引數二:GPIO_InitTypeDef結構體指標
	GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); //初始化GPIO
	
	/*紅燈*/
	GPIO_InitStruct.GPIO_Pin = LED_R_GPIO_PIN;
	GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
	
	/*藍燈*/
	GPIO_InitStruct.GPIO_Pin = LED_B_GPIO_PIN;
	GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
	
	while(1){
		//點亮綠LED
		GPIO_ResetBits(LED_GPIO_PORT, LED_G_GPIO_PIN);
		delay_ms(10);
		//熄滅綠LED
		GPIO_SetBits(LED_GPIO_PORT, LED_G_GPIO_PIN);
		delay_ms(10);
		GPIO_ResetBits(LED_GPIO_PORT, LED_R_GPIO_PIN);
		delay_ms(10);
		GPIO_SetBits(LED_GPIO_PORT, LED_R_GPIO_PIN);
		delay_ms(10);
		GPIO_ResetBits(LED_GPIO_PORT, LED_B_GPIO_PIN);
		delay_ms(10);
		GPIO_SetBits(LED_GPIO_PORT, LED_B_GPIO_PIN);
		delay_ms(10);
	}
}

③同樣在 USER 資料夾中新建一個 main.c 檔案

#include "stm32f10x.h"
#include "bsp_led.h"

int main(void)
{
	// 程式來到 main 函式之前,啟動檔案:statup_stm32f10x_hd.s 已經呼叫
	// SystemInit()函式把系統時鐘初始化成 72MHZ
	// SystemInit()在 system_stm32f10x.c 中定義
	// 如果使用者想修改系統時鐘,可自行編寫程式修改
	LED_GPIO_Config();
}

④點選魔法棒進行配置
在這裡插入圖片描述
二、用Proteus進行模擬
①新建一個工程檔案,並引入如下器件
在這裡插入圖片描述
②電路連線如下:
在這裡插入圖片描述
③雙擊 STM32F103R6 晶片,連結 MDK 生成的 .hex 檔案
在這裡插入圖片描述
④點選模擬執行,結果如下
在這裡插入圖片描述
三、參考?
https://blog.csdn.net/xwmrqqq/article/details/109567220

相關文章