找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2474|回复: 2
打印 上一主题 下一主题
收起左侧

Proteus8.9 VSM Studio Keil编译器仿真freeRTOS_STM32F103R6_系列001_跑马灯

[复制链接]
跳转到指定楼层
楼主
本帖最后由 kaillen 于 2020-9-25 01:28 编辑

一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示)

图1

二,调整原理图大小,适合可视,另存工程文件。(如下图2,3,4所示)

图2


图3


图4

三,点击Source Code标签。(如下图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"


//任务优先级
#define START_TASK_PRIO                1
//任务堆栈大小        
#define START_STK_SIZE                 128  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);

//任务优先级
#define LED0_TASK_PRIO                2
//任务堆栈大小        
#define LED0_STK_SIZE                 50  
//任务句柄
TaskHandle_t LED0Task_Handler;
//任务函数
void led0_task(void *pvParameters);

//任务优先级
#define LED1_TASK_PRIO                3
//任务堆栈大小        
#define LED1_STK_SIZE                 50  
//任务句柄
TaskHandle_t LED1Task_Handler;
//任务函数
void led1_task(void *pvParameters);


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

        USART1_Init(57600); //串口初始化(参数是波特率)

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


        xTaskCreate((TaskFunction_t )start_task,            //任务函数
                (const char*    )"start_task",          //任务名称
                (uint16_t       )START_STK_SIZE,        //任务堆栈大小
                (void*          )NULL,                  //传递给任务函数的参数
                (UBaseType_t    )START_TASK_PRIO,       //任务优先级
                (TaskHandle_t*  )&StartTask_Handler);   //任务句柄              
    vTaskStartScheduler();          //开启任务调度  
}



//开始任务任务函数
void start_task(void *pvParameters)
{
    taskENTER_CRITICAL();           //进入临界区
    //创建LED0任务
    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); //删除开始任务
    taskEXIT_CRITICAL();            //退出临界区
}

//LED0任务函数
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);
    }
}



六,点击构建工程按钮,编译工程。(如下图6所示)

图6

七,点击窗口左下方仿真按钮,可见虚拟LED显示。 (如下图7,8,9所示)

图7


图8

图9


八,选择release,点击构建工程按钮,编译工程生成Hex文件。(如下图10所示)


图10


附件Proteus8.9 VSM Studio Keil编译器仿真freeRTOS_STM32F103R6_系列001_跑马灯在已安装Proteus8.9的计算机文件夹中打开即可
需要进一步了解,请加入QQ群:976235464


freeRTOS_01_跑马灯_04pt.rar

942.75 KB, 下载次数: 67, 下载积分: 黑币 -5

在已安装Proteus8.9的计算机文件夹中打开即可

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:822837 发表于 2020-9-24 15:24 | 只看该作者
这个真的可以模拟仿真吗?很想要这种功能
回复

使用道具 举报

板凳
ID:288629 发表于 2021-2-1 11:29 | 只看该作者
这个很不错啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表