找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4085|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

Proteus8.9 VSM Studio Keil編譯器仿真freeRTOS_STM32F103R6_系列001_跑馬燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 kaillen 于 2020-9-25 01:28 編輯

一,打開(kāi)文件(可以隨文下載放置在文檔中打開(kāi))。(如下圖1所示)

圖1

二,調(diào)整原理圖大小,適合可視,另存工程文件。(如下圖2,3,4所示)

圖2


圖3


圖4

三,點(diǎn)擊Source Code標(biāo)簽。(如下圖5所示)

圖5

四,編輯main.c Proteus8.9 VSM Studio Keil編譯器仿真freeRTOS_STM32F103R6_系列001_跑馬燈 (如下圖6所示)

五,Main.c 代碼:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd1602.h"

#include "FreeRTOS.h"
#include "task.h"


//任務(wù)優(yōu)先級(jí)
#define START_TASK_PRIO                1
//任務(wù)堆棧大小        
#define START_STK_SIZE                 128  
//任務(wù)句柄
TaskHandle_t StartTask_Handler;
//任務(wù)函數(shù)
void start_task(void *pvParameters);

//任務(wù)優(yōu)先級(jí)
#define LED0_TASK_PRIO                2
//任務(wù)堆棧大小        
#define LED0_STK_SIZE                 50  
//任務(wù)句柄
TaskHandle_t LED0Task_Handler;
//任務(wù)函數(shù)
void led0_task(void *pvParameters);

//任務(wù)優(yōu)先級(jí)
#define LED1_TASK_PRIO                3
//任務(wù)堆棧大小        
#define LED1_STK_SIZE                 50  
//任務(wù)句柄
TaskHandle_t LED1Task_Handler;
//任務(wù)函數(shù)
void led1_task(void *pvParameters);


int main(void)
{
        
        NVIC_Configuration();
        delay_init();

        USART1_Init(57600); //串口初始化(參數(shù)是波特率)

        LED_Init();                     //初始化LED端口 if(USART_RX_STA&0x8000)


        xTaskCreate((TaskFunction_t )start_task,            //任務(wù)函數(shù)
                (const char*    )"start_task",          //任務(wù)名稱(chēng)
                (uint16_t       )START_STK_SIZE,        //任務(wù)堆棧大小
                (void*          )NULL,                  //傳遞給任務(wù)函數(shù)的參數(shù)
                (UBaseType_t    )START_TASK_PRIO,       //任務(wù)優(yōu)先級(jí)
                (TaskHandle_t*  )&StartTask_Handler);   //任務(wù)句柄              
    vTaskStartScheduler();          //開(kāi)啟任務(wù)調(diào)度  
}



//開(kāi)始任務(wù)任務(wù)函數(shù)
void start_task(void *pvParameters)
{
    taskENTER_CRITICAL();           //進(jìn)入臨界區(qū)
    //創(chuàng)建LED0任務(wù)
    xTaskCreate((TaskFunction_t )led0_task,            
                (const char*    )"led0_task",           
                (uint16_t       )LED0_STK_SIZE,
                (void*          )NULL,                                
                (UBaseType_t    )LED0_TASK_PRIO,        
                (TaskHandle_t*  )&LED0Task_Handler);   
    vTaskDelete(StartTask_Handler); //刪除開(kāi)始任務(wù)
    taskEXIT_CRITICAL();            //退出臨界區(qū)
}

//LED0任務(wù)函數(shù)
void led0_task(void *pvParameters)
{
    while(1)
    {
        LED0=~LED0;
                printf("LED0變換!\r\n");
        delay_us(50000);
        LED1=~LED1;
                printf("LED1變換!\r\n");
        delay_us(50000);
    }
}



六,點(diǎn)擊構(gòu)建工程按鈕,編譯工程。(如下圖6所示)

圖6

七,點(diǎn)擊窗口左下方仿真按鈕,可見(jiàn)虛擬LED顯示。 (如下圖7,8,9所示)

圖7


圖8

圖9


八,選擇release,點(diǎn)擊構(gòu)建工程按鈕,編譯工程生成Hex文件。(如下圖10所示)


圖10


附件Proteus8.9 VSM Studio Keil編譯器仿真freeRTOS_STM32F103R6_系列001_跑馬燈在已安裝Proteus8.9的計(jì)算機(jī)文件夾中打開(kāi)即可
需要進(jìn)一步了解,請(qǐng)加入QQ群:976235464


freeRTOS_01_跑馬燈_04pt.rar

942.75 KB, 下載次數(shù): 71, 下載積分: 黑幣 -5

在已安裝Proteus8.9的計(jì)算機(jī)文件夾中打開(kāi)即可

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:822837 發(fā)表于 2020-9-24 15:24 | 只看該作者
這個(gè)真的可以模擬仿真嗎?很想要這種功能
回復(fù)

使用道具 舉報(bào)

板凳
ID:288629 發(fā)表于 2021-2-1 11:29 | 只看該作者
這個(gè)很不錯(cuò)啊!
回復(fù)

使用道具 舉報(bào)

地板
ID:232462 發(fā)表于 2024-11-7 15:24 | 只看該作者
這個(gè)仿真不成功,燈不閃,只有仿真文件,沒(méi)有程序
回復(fù)

使用道具 舉報(bào)

5#
ID:1153328 發(fā)表于 2025-6-9 20:10 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表