|
一,打開文件(可以隨文下載放置在文檔中打開)。(如下圖1所示)
1.png (1.86 MB, 下載次數: 61)
下載附件
2020-9-25 02:41 上傳
圖1
二,調整原理圖大小,適合可視,另存工程文件。(如下圖2,3,4所示)
2.png (137.37 KB, 下載次數: 43)
下載附件
2020-9-25 02:41 上傳
圖2
3.png (142.5 KB, 下載次數: 43)
下載附件
2020-9-25 02:41 上傳
圖3
4.png (137.32 KB, 下載次數: 38)
下載附件
2020-9-25 02:41 上傳
圖4
三,點擊Source Code標簽。(如下圖5所示)
5.png (111.13 KB, 下載次數: 52)
下載附件
2020-9-25 02:41 上傳
圖5
四,編輯main.c Proteus8.9 VSM Studio Keil編譯器仿真freeRTOS_STM32F103R6_系列011_lcd1602并口 (如下圖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); //串口初始化(參數是波特率)
GPIOSt_Init();
GPIOB->ODR= (0xff<<8);
lcd_init();
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)
{
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);
}
}
六,點擊構建工程按鈕,編譯工程。(如下圖6所示)
6.png (117.42 KB, 下載次數: 48)
下載附件
2020-9-25 02:41 上傳
圖6
七,點擊窗口左下方仿真按鈕,可見虛擬LED顯示。 (如下圖7,8,9所示)
7.png (129.28 KB, 下載次數: 49)
下載附件
2020-9-25 02:41 上傳
圖7
8.png (83.42 KB, 下載次數: 46)
下載附件
2020-9-25 02:41 上傳
圖8
9.png (135.67 KB, 下載次數: 44)
下載附件
2020-9-25 02:41 上傳
圖9
八,選擇release,點擊構建工程按鈕,編譯工程生成Hex文件。(如下圖10所示)
10.png (121.26 KB, 下載次數: 43)
下載附件
2020-9-25 02:41 上傳
圖10
附件Proteus8.9 VSM Studio Keil編譯器仿真freeRTOS_STM32F103R6_系列011_lcd1602并口在已安裝Proteus8.9的計算機文件夾中打開即可
需要進一步了解,請加入QQ群:976235464
|
評分
-
查看全部評分
|