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模擬學習筆記筆記
- Proteus實現簡單51程式的設計與模擬
- 51微控制器競賽設計44例全部帶proteus模擬+程式
- Fuzz前置技能-unicorn模擬執行
- 使用Genymotion模擬器或者手機執行ionic4程式
- 模擬主執行緒等待子執行緒的過程執行緒
- 基於51微控制器的交通燈Proteus模擬設計
- Proteus模擬MSP430微控制器的若干問題記錄
- 【硬體】無線感測網實訓——Proteus8模擬工具使用
- 透過一個模擬程式讓你明白WCF大致的執行流程
- 《微軟模擬飛行》執行製作人Jorg Neumann專訪微軟
- proteus模擬數碼管無法動態顯示的問題-解決方法
- 微控制器C語言程式設計實訓100例 基於8051+Proteus模擬 第2版pdfC語言程式設計
- 基於 HTML5 WebGL 智慧城市的模擬執行HTMLWeb
- ?好訊息!Android 模擬器可以執行 ARM 應用了Android
- JAVA學習之路(多執行緒)—模擬售票(細解)Java執行緒
- 使用執行緒模擬解決銀行排隊叫號問題執行緒
- mumu模擬器 指定應用當前執行的 ABI 版本
- STM32流水燈在Protues上執行教程
- 《微軟飛行模擬 2020》,硬核模擬器也有春天微軟
- 執行緒模組執行緒
- mumu模擬器 adb shell 登入後執行命令 Inappropriate ioctl for deviceAPPdev
- 模擬oracle rac節點異常時如何保持ogg正常執行Oracle
- 模擬supervisor的程式管理
- vue-toy: 200行程式碼模擬Vue實現Vue行程
- JMeter100個執行緒竟然只模擬出1個併發JMeter執行緒
- Uni-App 打包出來的 Apk 不能在模擬器上執行APPAPK
- 一個可以在多平臺執行的任天堂GameBoy模擬器GAM
- saltstack 常用執行模組
- 用 150 行 Python 程式碼寫的量子計算模擬器Python
- 一行程式碼幫你檢測Android模擬器行程Android
- 2024.9.28 程式碼源模擬賽
- 程式執行緒篇——程式執行緒基礎執行緒
- 模擬Oracle行遷移和行連結Oracle
- 程式-程式-執行緒執行緒
- 從“模擬”的角度看,《微軟模擬飛行》還需要什麼?微軟