找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2115|回复: 0
收起左侧

Proteus8.9 VSM Studio Keil编译器仿真UCOSII_STM32F103R6_系列011_lcd1602并口

[复制链接]
ID:371233 发表于 2020-9-26 04:45 | 显示全部楼层 |阅读模式
一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示)
1.png
图1

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

3.png
图3

4.png
图4

三,点击Source Code标签。(如下图5所示)
5.png
图5

四,编辑main.c Proteus8.9 VSM Studio Keil编译器仿真UCOSII_STM32F103R6_系列011_lcd1602并口 (如下图6所示)

五,Main.c 代码:

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

//START 任务
//设置任务优先级
#define START_TASK_PRIO                        10  ///开始任务的优先级为最低
//设置任务堆栈大小
#define START_STK_SIZE                        128
//任务任务堆栈
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);

//LED0任务
//设置任务优先级
#define LED0_TASK_PRIO                        7
//设置任务堆栈大小
#define LED0_STK_SIZE                        128
//任务堆栈
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);

//LED1任务
//设置任务优先级
#define LED1_TASK_PRIO                        6
//设置任务堆栈大小
#define LED1_STK_SIZE                        128
//任务堆栈
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//任务函数
void led1_task(void *pdata);

//浮点测试任务
#define FLOAT_TASK_PRIO                        5
//设置任务堆栈大小
#define FLOAT_STK_SIZE                        128
//任务堆栈
//如果任务中使用printf来打印浮点数据的话一点要8字节对齐
__align(8) OS_STK FLOAT_TASK_STK[FLOAT_STK_SIZE];
//任务函数
void float_task(void *pdata);

int main(void)
{
        delay_init();               //延时初始化
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
        uart_init(57600);            //串口波特率设置
        LED_Init();                          //LED初始化
        delay_ms(500);
        GPIOSt_Init();
        GPIOB->ODR= (0xff<<8);
        lcd_init();
       
        OSInit();                                  //UCOS初始化
        OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO); //创建开始任务
        OSStart();                                 //开始任务
}

//开始任务
void start_task(void *pdata)
{
        OS_CPU_SR cpu_sr=0;
        pdata=pdata;
        //OSStatInit();  //开启统计任务
       
        OS_ENTER_CRITICAL();  //进入临界区(关闭中断)
        OSTaskCreate(led0_task,(void*)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);//创建LED0任务
        //OSTaskCreate(led1_task,(void*)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);//创建LED1任务
        OSTaskCreate(float_task,(void*)0,(OS_STK*)&FLOAT_TASK_STK[FLOAT_STK_SIZE-1],FLOAT_TASK_PRIO);//创建浮点测试任务
        OSTaskSuspend(START_TASK_PRIO);//挂起开始任务
        OS_EXIT_CRITICAL();  //退出临界区(开中断)
}


//LED0任务
void led0_task(void *pdata)
{
        while(1)
        {
                delay_us(50000);
        LED0=~LED0;
                printf("LED0变换!\r\n");
                LClear();
                ShowStr(1, 0, "Kaillen Work", 12);
                ShowStr(2, 1, "Wellcom YOU!", 12);
        delay_us(50000);
        LED1=~LED1;
                printf("LED1变换!\r\n");
                LClear();
                ShowStr(1, 0, "Code Made", 9);
                ShowStr(2, 1, "---Ziegler Yin", 14);
        }
}

//LED1任务
void led1_task(void *pdata)
{
        while(1)
        {
                delay_us(300000);
        }
}

//浮点测试任务
void float_task(void *pdata)
{
        OS_CPU_SR cpu_sr=0;
        static float float_num=0.01;
        while(1)
        {
                float_num+=0.01f;
                OS_ENTER_CRITICAL();        //进入临界区(关闭中断)
                printf("float_num的值为: %.4f\r\n",float_num); //串口打印结果
                OS_EXIT_CRITICAL();                //退出临界区(开中断)
                delay_ms(500);
        }
}


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

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

8.png
图8
9.png
图9


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

10.png
图10


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


UCOSII_11_lcd1602并口_04pt.rar

1.05 MB, 下载次数: 72, 下载积分: 黑币 -5

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

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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