|
本帖最后由 kaillen 于 2020-9-25 01:28 編輯
一,打開(kāi)文件(可以隨文下載放置在文檔中打開(kāi))。(如下圖1所示)
51hei.png (14.05 KB, 下載次數(shù): 60)
下載附件
2020-9-24 01:51 上傳
圖1
二,調(diào)整原理圖大小,適合可視,另存工程文件。(如下圖2,3,4所示)
2.png (155.6 KB, 下載次數(shù): 73)
下載附件
2020-9-24 01:40 上傳
圖2
3.png (145.61 KB, 下載次數(shù): 76)
下載附件
2020-9-24 01:40 上傳
圖3
4.png (136.72 KB, 下載次數(shù): 76)
下載附件
2020-9-24 01:40 上傳
圖4
三,點(diǎn)擊Source Code標(biāo)簽。(如下圖5所示)
5.png (114.91 KB, 下載次數(shù): 92)
下載附件
2020-9-24 01:41 上傳
圖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.png (131.83 KB, 下載次數(shù): 66)
下載附件
2020-9-24 01:41 上傳
圖6
七,點(diǎn)擊窗口左下方仿真按鈕,可見(jiàn)虛擬LED顯示。 (如下圖7,8,9所示)
7.png (145.52 KB, 下載次數(shù): 79)
下載附件
2020-9-24 01:41 上傳
圖7
8.png (92 KB, 下載次數(shù): 71)
下載附件
2020-9-24 01:41 上傳
圖8
9.png (148.3 KB, 下載次數(shù): 67)
下載附件
2020-9-24 01:41 上傳
圖9
八,選擇release,點(diǎn)擊構(gòu)建工程按鈕,編譯工程生成Hex文件。(如下圖10所示)
10.png (131.83 KB, 下載次數(shù): 66)
下載附件
2020-9-24 01:41 上傳
圖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
2020-9-25 01:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
942.75 KB, 下載次數(shù): 71, 下載積分: 黑幣 -5
在已安裝Proteus8.9的計(jì)算機(jī)文件夾中打開(kāi)即可
評(píng)分
-
查看全部評(píng)分
|