在调试代码的时候,有时候手头上没有硬件环境,就需要用到纯软件仿真。下面先看一下要测试的代码。
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "FreeRTOS.h"
#include "task.h"
_Bool ledState = 0;
//任务1
void vTask1(void *pvParameters)
{
const char *pcTaskName = "Task 1 is runing \r\n";
volatile unsigned long ul;
for(;;)
{
printf("%s\r\n", pcTaskName);
ledState = 0;
LED1 = 0;
for(ul = 0; ul < 1000; ul++)
{
}
}
}
//任务2
void vTask2(void *pvParameters)
{
const char *pcTaskName = "Task 2 is runing \r\n";
volatile unsigned long ul;
for(;;)
{
printf("%s\r\n", pcTaskName);
ledState = 1;
LED1 = 1;
for(ul = 0; ul < 1000; ul++)
{
}
}
}
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
delay_init(); //延时函数初始化
uart_init(115200); //初始化串口
LED_Init(); //初始化LED
//创建开始任务
xTaskCreate(vTask1, //任务函数的指针
"Task 1", //任务的文本名字,只会在调试中用到
100, //栈深度
NULL, //没有任务参数
1, //任务优先级
NULL //不会用到任务句柄
);
xTaskCreate(vTask2, "Task 2", 100, NULL, 1, NULL);
vTaskStartScheduler(); //开启任务调度
}
首先设置参数
设置晶振
设置软件仿真及Dialog 和 Paramerter参数。
下来开始仿真
在要观察的变量值上面右键,将变量添加到逻辑分析仪中。
要观察的变量值是0和1变化的。所以在逻辑分析仪上,将要观察的值设置为bit类型。
在逻辑分析仪上右键,选择bit。
如何要实时显示变量值,将view选项中最后一项打上勾。