Proteus模擬執行stm32程式
一、用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
相關文章
- 關於在ubuntu中用vscode編譯除錯C\C++,Proteus模擬執行stm32程式UbuntuVSCode編譯除錯C++
- stem32 程式編譯和proteus模擬編譯
- Proteus實現簡單51程式的設計與模擬
- STM32模擬SPI介面
- 51微控制器競賽設計44例全部帶proteus模擬+程式
- shell模擬“多執行緒”執行緒
- 程式模擬tomcat伺服器執行過程Tomcat伺服器
- Thinking in Java---多執行緒模擬:銀行出納員模擬+飯店模擬+汽車裝配工廠模擬ThinkingJava執行緒
- Fuzz前置技能-unicorn模擬執行
- 使用Genymotion模擬器或者手機執行ionic4程式
- 模擬主執行緒等待子執行緒的過程執行緒
- 【硬體】無線感測網實訓——Proteus8模擬工具使用
- 透過一個模擬程式讓你明白WCF大致的執行流程
- 《微軟模擬飛行》執行製作人Jorg Neumann專訪微軟
- 用vc執行緒模擬實現並行演算法 (轉)執行緒並行演算法
- 編寫多執行緒應用程式,模擬多個人通過一個山洞:執行緒
- 基於 HTML5 WebGL 智慧城市的模擬執行HTMLWeb
- JAVA學習之路(多執行緒)—模擬售票(細解)Java執行緒
- 微控制器C語言程式設計實訓100例 基於8051+Proteus模擬 第2版pdfC語言程式設計
- 使用執行緒模擬解決銀行排隊叫號問題執行緒
- 通過一個模擬程式讓你明白ASP.NET MVC是如何執行的ASP.NETMVC
- ?好訊息!Android 模擬器可以執行 ARM 應用了Android
- 2017模擬題(猜算式)//執行不對已改正
- 用JSON-server模擬REST API(一) 安裝執行JSONServerRESTAPI
- Java:多執行緒模擬多站點售票過程薦Java執行緒
- STM32流水燈在Protues上執行教程
- js使用yield模擬多執行緒的方法簡單介紹JS執行緒
- 《微軟飛行模擬 2020》,硬核模擬器也有春天微軟
- FPGA程式設計基礎(二)--常用行為模擬描述FPGA程式設計
- 從“模擬”的角度看,《微軟模擬飛行》還需要什麼?微軟
- 模擬supervisor的程式管理
- 作業排程模擬程式
- 一個可以在多平臺執行的任天堂GameBoy模擬器GAM
- Uni-App 打包出來的 Apk 不能在模擬器上執行APPAPK
- 模擬oracle rac節點異常時如何保持ogg正常執行Oracle
- Weex 起步:專案初始化和模擬器執行 Native APPAPP
- 模擬Oracle行遷移和行連結Oracle
- 實驗三 程式模擬排程程式