Tải bản đầy đủ (.doc) (197 trang)

Tự học FREERTOS hệ điều hành thời gian thực

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.32 MB, 197 trang )

[Kinh nghiệm] Bật: Chương 3 FreeRTOS bắt đầu chuẩn bị hệ thống
Nói đi, mọi thứ đều khó khăn lúc đầu, học hỏi kiến thức mới, không phải kiến thức chính nó là
thường khó khăn, nhưng làm thế nào để bắt đầu một cách nhanh chóng, những gì nhu cầu và môi
trường phát triển thông tin, một khi bắt đầu, chuyên sâu nghiên cứu các thân nhân sẽ dễ dàng
hơn.
Phần này sẽ đóng một vai trò, chủ yếu được mô tả dưới mới bắt đầu hệ điều hành FreeRTOS
để làm công việc chuẩn bị.
3.1 Môi trường phát triển
3.2 FreeRTOS hệ thống Tài liệu tham khảo
3,3 FreeRTOS phương pháp gỡ lỗi
3.4 tóm tắt
3.1 môi trường phát triển
U IDE : hỗ trợ môi trường phát triển hai IDE, MDK và IAR
L MDK4.7X hoặc MDK5.XX thể, MDK4.7X phiên bản sau không làm việc vì các phiên bản
thấp không hỗ trợ STM32F429, và không hỗ trợ C biên soạn lồng nhau .
l IAR sử dụng IAR7.5 cố định, nhưng do khả năng tương thích ngược của IAR, nên các phiên
bản khác không hỗ trợ.
u gỡ lỗi sử dụng JLINK, ULINK hoặc STLINK có thể được.
u hỗ trợ ban phát triển MCU là STM32F429BIT6.
3.2 Hệ thống FreeRTOS Tài liệu tham khảo

3,2 FreeRTOS hệ thống tài liệu tham khảo
học tập FreeRTOS hai dữ liệu chính có thể tham khảo:
3.2.1 sách nhập FreeRTOS và các phiên bản điện tử

FreeRTOS có một cuốn sách giới thiệu đặc biệt, mà còn là một phiên bản PDF của cuốn sách, và hướng dẫn th
có phiên bản PDF.
FreeRTOS PDF phiên bản của cuốn cẩm nang Hướng dẫn Bắt đầu và tham khảo API là sự cần thiết để dành tiền
thủ công Địa chỉ:
/>


Hình 3.1 Ảnh chụp màn hình của FreeRTOS Bắt đầu
Tài liệu tham khảo PDF cho Tài liệu tham khảo API Nơi mua:
/>
Hình 3.2 Ảnh chụp màn hình của FreeRTOS Bắt đầu


l Bắt đầu Hướng dẫn và Hướng dẫn sử dụng API Reference trong tải điện tử
tải diễn đàn của chúng tôi Fu Lai điện tử nêu trên, Bắt đầu Manual Tải về (phiên bản V1.3.2):
/>API Reference Manual (FreeRTOS V8.1.2)
/>Nếu vậy, đề nghị bạn nên mua chính hãng, bởi vì, sau khi tất cả, là một mã nguồn mở miễn phí
FreeRTOS bản thân, các khía cạnh của Diễn đàn cũng cần chi phí bảo trì Để cho biết hỗ trợ cho FreeRTOS.

3.2.2 FreeRTOS thủ công phiên bản trực tuyến
FreeRTOS phiên bản trực tuyến của cuốn cẩm nang với các phần nêu trên 3.2.1 Bắt đầu bằng
tay và tài liệu tham khảo API tay về như nhau, nhưng phiên bản PDF của Bắt đầu hướng dẫn chi
tiết hơn so với phiên bản trực tuyến, sau khi tất cả, là một hướng dẫn giới thiệu đặc biệt
Sách. Trong thực tế, không chỉ FreeRTOS hệ điều hành là, như RTX và uCOS tại là mẫu đơn
này, một cẩm nang chế độ offline điện tử và một cẩm nang trực tuyến.
View Online trang web chính thức địa chỉ: />góc trên bên trái của danh sách để mở (phần chụp màn hình):


Hình 3.3 Hướng dẫn sử dụng FreeRTOS online
Sau khi giới thiệu hệ điều hành FreeRTOS, chủ yếu phụ thuộc vào hướng dẫn sử dụng trực
tuyến hoặc tài liệu hướng dẫn sử dụng PDF, về cơ bản có thể giải quyết hầu hết các vấn đề.
3.2.3 Gói phần mềm
FreeRTOS Gói phần mềm FreeRTOS chứa mã nguồn không chỉ, mà còn cho mỗi nhà sản xuất
vi mạch Demo Board Demo. Địa chỉ tải xuống gói phần mềm FreeRTOS:
/>

Hình 3.4FreeRTOS phiên bản mới nhất và lịch sử của nó Tải về (một phần ảnh chụp màn hình)

Hình 3.5 dưới đây cho thấy một ví dụ về một bộ đánh giá FreeRTOS cho ST (ảnh chụp màn hình
một phần):


Hình 3.5 FreeRTOS cho bảng đánh giá ST hỗ trợ ví dụ
Ngoài ra FreeRTOS gói đường dẫn: \ FreeRTOS \ Demo \ Common \ Ví dụ tối thiểu của các
thành phần khác nhau, như trong hình 3.6 bên dưới:


Hình 3.6 FreeRTOS mỗi thành phần ví dụ
Những ví dụ này cũng rất có giá trị học tập, chẳng hạn như FreeRTOS có thể học hỏi sau khi bắt
đầu.
3.3 FreeRTOS phương pháp gỡ lỗi

hướng dẫn cung cấp hai phương pháp để gỡ lỗi các FreeRTOS, FreeRTOS plug-in công việc in
nối tiếp và thực hiện các Chương 9 IAR Chương 8 sử dụng. Bắt đầu từ Chương 10, tất cả các ví
dụ hỗ trợ đã làm một hỗ trợ công việc in nối tiếp.
3.4 tóm tắt
phần này cho tất cả mọi người để giải thích rất nhiều, nó được khuyến khích cho người mới bắt
đầu để mất một thời gian cho các phiên bản trực tuyến của cuốn cẩm nang để tìm hiểu thêm về
hệ thống FreeRTOS, cùng với học tập tương lai tốt nhất có thể đạt được mức độ thành thạo xem
hướng dẫn.


[Thông tin] đến: Chương 5 Ghép ghép hệ điều hành FreeRTOS (phiên bản MDK)
Chương này hướng dẫn sẽ giới thiệu việc cấy ghép hệ điều hành FreeRTOS dựa trên MDK. việc
cấy ghép tương đối đơn giản, người dùng chỉ cần thêm các tập tin nguồn cần thiết không cần
phải làm bất cứ công việc cơ bản, và sau đó thêm ba macro có thể được xác định.
ghép STM32F103 và Cortex-M4 lõi chứa chương hướng dẫn Cortex-M3 STM32F407 lõi,
ghép F429.



5.1 pretransplant Chuẩn bị Note
5.2 STM32F103 hệ thống ghép FreeRTOS
5.3 STM32F407 hệ thống ghép FreeRTOS
5.4 STM32F429 hệ thống ghép FreeRTOS
5,5
tóm tắt

5.1 Chuẩn bị Lưu ý trước khi cấy ghép
1.
Phần này của môi trường phát triển IDE MDK, với MDK4.7X hoặc MDK5.XX có thể đảm
bảo hỗ trợ STM32F103, F407 và F429 có thể được ( không thể sử dụng MDK4.7X phiên bản
sau, trên một mặt không hỗ trợ F429, người kia là FreeRTOS V8.2.3 sử dụng mã lắp ráp C mã
lồng nhau, MDK4.7X các phiên bản sau không được hỗ trợ ).
2.
tìm kiếm một dự án đơn giản, nó là vùng chọn tốt nhất và các loại tương tự như đơn giản
càng tốt, chúng ta có thể ghép vào dự án này đơn giản trên.
3.
dự án đơn giản mà không thể có tất cả mọi người sử dụng SysTick, PendSV và SVC ba hệ
thống sử dụng ngắt, bởi vì hệ thống FreeRTOS sử dụng ba ngắt.
5.2 STM32F103 ghép hệ thống FreeRTOS
5.2.1 FreeRTOS hệ điều hành di cư
đầu tiên chuẩn bị một đơn giản trần mẫu kim loại kỹ thuật, kỹ thuật sản xuất các mẫu không
giải thích, trọng tâm ở đây là để dạy cho bạn hệ thống ghép FreeRTOS. Mẫu dự án chuẩn bị được
thể hiện trong hình 5.1 bên dưới ( chúng tôi cũng có thể tạo ra bất kỳ mẫu dự án khác mà không
giới hạn ):


Hình 5.1 Mẫu dự án

Khi bạn đã sẵn sàng mẫu dự án của mình, bạn đã sẵn sàng di chuyển. Điều đầu tiên cần làm là
đặt tất cả các tệp nguồn yêu cầu vào mẫu dự án . Sau đây sáu bước và chúng tôi đã giải thích, tất
nhiên, không giới hạn phải sử dụng phương pháp sau đây để thêm mã nguồn cho dự án, miễn là
sự cần thiết phải thêm tệp vào mẫu dự án.
Bước 1: Từ trang web tải về
phiên bản V8.2.3, đây là loạt 8.x cao nhất mà phiên bản, phiên bản 9.0 vẫn đang trong giai đoạn
thử nghiệm , Chúng tôi không sử dụng tạm thời.
FreeRTOSV8.2.3.zip và FreeRTOSV8.2.3.exe nội dung là như nhau, nhưng tỷ lệ nén suffix exe
cao hơn. Trích xuất sau khi tải về.


Bước 2: Tạo một thư mục FreeRTOS trong mẫu dự án

Bước 3: Thêm các tập tin nguồn vào thư mục thích hợp
gói đường FreeRTOSV8.2.3: FreeRTOSV8.2.3 \ FreeRTOS \ file nguồn mà tất cả những
điều sau đây

Sao chép vào thư mục FreeRTOS mới tạo.
Người dùng cũng cần thêm các tệp sau:

Nộp hồ sơ FreeRTOSConfig.h đường dẫn trong gói FreeRTOSV8.2.3: FreeRTOSV8.2.3 \


FreeRTOS \ Demo \ CORTEX_STM32F103_Keil , trên thực tế, chính thức dọn dẹp hồ sơ.
Bước 3: thêm tệp nguồn vào dự án MDK, thêm các kết quả sau:

Mà đường dẫn tập tin heap_4.c: FreeRTOS \ Source \ xách tay \ MemMang
port.c đường dẫn và tập tin portmacro.h: FreeRTOS \ Source \ xách tay \ RVDS \ ARM_CM3 ,
đó là do STM32F103 M3 lõi, vì vậy các tập tin chuyển đổi cũng muốn thêm M3 lõi Các
Bước 4: Tạo một tệp includes.h mới, tất cả các tệp tiêu đề được tập trung dưới tệp tin tiêu đề

này.
Lợi thế của việc này là khi bạn tham khảo một tập tin tiêu đề, chỉ cần thêm tập tin tiêu
đề. includes.h trên thư mục User. Tệp này sau đó được thêm vào dự án MDK ( lợi ích của việc
thêm tệp .h vào dự án là dễ xem và sửa đổi )


Tệp Includes.h như sau:
/*
*************************************
************************************************** ****************
*
Tên module: Tóm tắt các tệp tiêu đề
* Tên tệp: includes.h
* Phiên bản: V1.0
* Mô tả: Tóm tắt các tệp tiêu đề hiện đang sử dụng
*
Lịch sử thay đổi:
* Phiên bản Ngày Tác giả Mô tả
* V1.0 2015-08-02 Eric2013 Xuất bản lần đầu
*
* Bản quyền (C), 2015-2020, Avnet Electronics www.armfly.com
*
************ **************************************************
*******************************************
*/
#ifndef __INCLUDES_H__
#define __INCLUDES_H__
/*



**************************************************
************************************************** *****
* Thư viện chuẩn
******************************************
************************************************** *************
*/
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/*
***** **************************************************
**************************************************
* Các thư viện khác
***********************************************
************************************************** ********
*/

/*
**************************************************
************************************************** *****
* Hệ điều hành
*******************************************
************************************************** ************
*/
# include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "croutine.h"


/*
****** **************************************************
*****************************************************
* Định nghĩa Macro
************************************************
************************************************** *******
*/


/*
**************************************************
************************************************** *****
* APP / BSP
*****************************************
************************************************** **************
*/
#include <bsp.h>

#endif
Bước 5: Thêm đường dẫn tệp tin tiêu đề tương ứng, dựa trên mẫu dự án ban đầu để thêm hai
đường dẫn mới:

Bước 6: Bước cuối cùng, mà còn là bước quan trọng nhất, FreeRTOSConfig.h sửa đổi các
file cấu hình ( dùng để sửa đổi theo cấu hình của họ, mà không sửa đổi không phải là vấn
đề , thực hiện thay đổi, chúng tôi đang ở đây chủ yếu cho sự tiện lợi của người mới bắt đầu học ),
những thay đổi chính đến hai khía cạnh sau:
thêm định nghĩa vĩ mô __NVIC_PRIO_BITS , STM32 ưu tiên gia đình chỉ có bốn.
sửa đổi mức độ ưu tiên liên quan đến một số định nghĩa vĩ mô, được sửa đổi cụ thể
có thể so sánh chế độ xem tập tin ban đầu.

Sửa đổi ở phần cuối của tài liệu này cộng Systick, PendSV SVC chức năng ngắt và định nghĩa
vĩ mô, mục đích là để ánh xạ các tập tin chuyển đổi port.c FreeRTOS tập tin bên trong dịch vụ
thường xuyên ngắt để đặt tên CMSIS độ nét tiêu chuẩn, do đó người dùng không cần phải sửa


đổi Mã khởi động dự án trong tên của các ngắt này, nó là thuận tiện để đạt được sự thống nhất
của hai chức năng. ( Ghép uCOS-II, hoặc III thông qua việc sử dụng, cho rằng vấn đề ước tính
được hiểu đầy đủ, bởi vì tập tin uCOS khởi động để sửa đổi, trên thực tế, thuận tiện hơn để sử
dụng thân này )
[URL =] Sao chép mã [/ url]
1.
2.
3.
4.
5.

/ * Các định nghĩa mô phỏng các bộ xử lý ngắt cổng FreeRTOS tới CMSIS của chúng
tên tiêu chuẩn. * /
# xác định vPortSVCHandler SVC_Handler
# xác định xPortPendSVHandler PendSV_Handler
# xác định xPortSysTickHandler SysTick_Handler

Các vPortSVCHandler, xPortPendSVHandler và xPortSysTickHandler được định nghĩa trong tệp
port.c bên trong. SVC_Handler, PendSV_Handler và SysTick_Handler được định nghĩa trong tệp
startup_stm32f10x_hd.s.
Dưới đây là nội dung hoàn toàn cấu hình FreeRTOSConfig.h file:
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/ * ------------------------------- ---------------------------* Các định nghĩa ứng dụng cụ thể
*

* Các định nghĩa này cần được điều chỉnh cho phần cứng và
yêu cầu ứng dụng cụ thể của bạn
*
PARAMETERS được mô tả trong vòng NÀY * THE 'CẤU HÌNH' phần của
* FreeRTOS API TÀI LIỆU SẴN TRÊN FreeRTOS.org WEB SITE.
*
* Xem />* ------ -------------------------------------------------- - * /
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
configUSE_TICK_HOOK 0 #define
#define configCPU_CLOCK_HZ ((unsigned Long) 72000000)
#define configTICK_RATE_HZ ((TickType_t) 1000)
configMAX_PRIORITIES #define (. 5)
#define configMINIMAL_STACK_SIZE ((unsigned ngắn) 128)
#define configTOTAL_HEAP_SIZE ((size_t) (. 17 * 1024 ))
#define configMAX_TASK_NAME_LEN (16)


#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD. 1
/ * Định nghĩa của Co-thói quen. * /
configUSE_CO_ROUTINES #define 0
#define configMAX_CO_ROUTINE_PRIORITIES (2)
/ * Tại The Định nghĩa sau vào Set 1 tới bao gồm ít Chức năng API, hoặc ZERO
đến loại trừ tại The hàm API. * /
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0

#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define . 1 INCLUDE_vTaskDelay
định nghĩa / M-cụ thể Cortex *. * /
#ifdef __NVIC_PRIO_BITS
/ BE * Sẽ __BVIC_PRIO_BITS các CMSIS IS được quy định khi được sử dụng. * /
#define configPRIO_BITS __NVIC_PRIO_BITS
#else
configPRIO_BITS 4 #define / ưu tiên * 15 cấp độ * /
#endif
/ * tại The ngắt ưu tiên thấp nhất có thể là một sử dụng trong một cuộc gọi để "ưu tiên SET"
chức năng. * /
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x0F
/ * tại The ngắt ưu tiên cao nhất có thể sử dụng các bất kỳ gián đoạn dịch vụ do
thói quen mà làm cho cuộc gọi để làm gián đoạn chức năng Safe FreeRTOS API. nGƯỜI ĐÀN
ÔNG KHÔNG dO GỌI
CHỨC nĂNG API ngắt aN TOÀN FreeRTOS FROM mà có một trong các lĩnh vực
COMMUNICAITIONS ANY ngắt
ƯU TIÊN HƠN NÀY! (trong các lĩnh vực COMMUNICAITIONS ưu tiên là giá trị số thấp hơn.
*/
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 0x01
/ * gián đoạn ưu tiên sử dụng bởi các lớp cổng hạt nhân riêng của mình. Đây là những chung


Tất cả các cổng Cortex-M để, và đừng Không phải bất cứ dựa vào chức năng thư viện đặc biệt
* /.
# Define configKERNEL_INTERRUPT_PRIORITY
(configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 -. ConfigPRIO_BITS))
/ * Không !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY PHẢI SET ZERO tới !!!!
See . * /

#define configMAX_SYSCALL_INTERRUPT_PRIORITY
(configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 -. configPRIO_BITS))
/ * Bình thường Khẳng định () Ngữ nghĩa cung cấp mà không có sự dựa vào AN Khẳng định .h
. tập tin tiêu đề * /
#define configASSERT (X) IF ((X) == 0) {taskDISABLE_INTERRUPTS (); for (;;);}
/ * Định nghĩa rằng Cảng Map việc xử lý ngắt cho FreeRTOS các CMSIS họ
tên chuẩn. * /
vPortSVCHandler SVC_HANDLER #define
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler

#endif / * FREERTOS_CONFIG_H * /
Tại thời điểm này, công việc porting FreeRTOS đã hoàn thành, và phần còn lại là cấu hình hệ
thống và ứng dụng. Cấu hình hệ thống, sẽ được dành cho chương thứ bảy.
5.2.2 FreeRTOS hoạt động ứng dụng hệ thống ví dụ
một vài tập tin cấu hình quan trọng mà FreeRTOSConfig.h Tùy chọn Mô tả:
U. 1 #define configUSE_PREEMPTION
cho phép lên lịch ưu tiên
u # define configCPU_CLOCK_HZ ((unsigned long) 72000000)
các 72MHz tần số hệ thống.
u # Xác định configTICK_RATE_HZ ((TickType_t) 1000)
Đồng hồ hệ thống sẽ nhịp 1KHz, tức là 1ms.
u # define configMAX_PRIORITIES (5)
xác định các ưu tiên cho người sử dụng lớn nhất của loạt bài này, nếu định nghĩa này là 5,
sau đó người dùng có thể sử dụng số ưu tiên là 0,1,2,3,4, không bao gồm 5, mà Một chút, người
mới bắt đầu nên chú ý đặc biệt.
u # define configTOTAL_HEAP_SIZE ((size_t) ( 17 * 1024))
xác định kích thước của heap, kernel FreeRTOS, người dùng ứng dụng bộ nhớ động, và vì vậy
cần phải sử dụng không gian nhiệm vụ ngăn xếp.



Sau khi cấu hình và chuyển đổi trên, thêm đoạn mã sau vào file main.c, mã đơn giản tạo ra bốn
nhiệm vụ sử dụng:
vTaskTaskUserIF Nhiệm vụ: nhắn giao diện xử lý, sử dụng ở đây như một đèn LED nhấp nháy.
Công việc AppTaskLED: Đèn LED nhấp nháy.
vTaskMsgPro nhiệm vụ: xử lý tin nhắn, được sử dụng ở đây như một đèn LED nhấp nháy.
AppTaskStart nhiệm vụ: bắt đầu nhiệm vụ, mà còn là nhiệm vụ ưu tiên cao nhất, ở đây để đạt
được LED nhấp nháy.
#include "includes.h"

/*
*****************************************
************************************************** ***************
Khai báo hàm
*********************************
**************************************************
************************************************************
*/
static void vTaskTaskUserIF (pvParameters void *);
static void vTaskLED (void * pvParameters);
static void vTaskMsgPro (void * pvParameters );
void tĩnh vTaskStart (void * pvParameters);
static void AppTaskCreate (void);
/*
*****************************************
************************************************** ***************
Biến Tuyên bố
*********************************
**************************************************
************************************************************

*/
tĩnh TaskHandle_t xHandleTaskUserIF = NULL;
tĩnh TaskHandle_t xHandleTaskLED = NULL;
tĩnh TaskHandle_t xHandleTaskMsgPro = NULL;
tĩnh TaskHandle_t xHandleTaskStart = NULL;
/*
*****************************************************
************************************************** ******


* Chức năng Tên: chính
* Chức năng Mô tả: C tiêu chuẩn nhập cảnh chương trình.
* Thông số: Không
* Giá trị trả lại: Không có
*********************************************
************************************************** **********
*/
int main (void)
{
/*
trước khi bạn bắt đầu lập kế hoạch, dịch vụ thường xuyên ngắt để ngăn chặn thiết bị ngoại vi
khởi STM32 thời gian, địa ngắt toàn cầu bị vô hiệu hóa (trừ NMI và HardFault).
Những lợi ích của việc làm như vậy là:
1. Chức năng FreeRTOS API được thực hiện trong các dịch vụ ngắt thói quen mà ngăn ngừa
thực hiện.
2. Để đảm bảo bắt đầu bình thường của hệ thống, không bị gián đoạn khác.
3. Về việc có nên tắt ngắt toàn cầu, chúng ta có thể thiết lập theo tình hình thực tế của họ hay
không.
Ngắt toàn cầu được khởi động lại trong hàm prvStartFirstTask trong port.c.__set_PRIMASK
(1)

tương đương với cpsie i bởi lệnh cpsie i on .
*/
__set_PRIMASK (1);
/ * phần cứng khởi tạo * /
bsp_Init ();
/ * Tạo một nhiệm vụ * /
AppTaskCreate ();
/ * Khởi động lên lịch, bắt đầu nhiệm vụ * /
vTaskStartScheduler ();
/*
Nếu hệ thống khởi động để chạy không có ở đây, có rất nhiều khả năng để chạy cho nhiệm
vụ nhiệm vụ hoặc hẹn giờ nhàn rỗi của
tình trạng thiếu không gian đống gây ra sự sáng tạo không, điều này sẽ làm tăng tập
FreeRTOSConfig.h kích thước heap định nghĩa:
#define configTOTAL_HEAP_SIZE ((size_t) (17 * 1024).)
*/
trong khi; (1).


}
/*
************************************************************
**************************************************
*********************************
* tên hàm: vTaskTaskUserIF
* chức năng: thông điệp giao diện xử lý, như ở đây LED nhấp nháy
* tham số: pvParameters được truyền khi tạo tham số nhiệm vụ
* giá trị trả về: Không
* ưu tiên: 1 (giá trị nhỏ hơn có nghĩa là một ưu tiên thấp hơn, với uCOS ngược lại)
********** **************************************************

*********************************************
*/
static void vTaskTaskUserIF (void * pvParameters)
{
while (1)
{
bsp_LedToggle (1);
vTaskDelay (100);
}
}
/*
********************** **************************************************
*********************************
* Chức năng Tên: vTaskLED
* Chức năng mô tả: LED nhấp nháy
* Thông số: pvParameters là Các thông số được thông qua trong việc tạo ra nhiệm vụ này
* Giá trị trả về: Không có
* Mức độ ưu tiên: 2
*******************************
************************************************** ************************
*/
static void vTaskLED (void * pvParameters)
{
while (1)
{
bsp_LedToggle (2);
vTaskDelay (200);
}



}
/*
*****************************************
************************************************** **************
* Chức năng tên: vTaskMsgPro
* Chức năng: Xử lý thông tin, ở đây được sử dụng làm đèn LED nhấp nháy
* Thông số: pvParameters là tham số chính thức thông qua khi tạo nhiệm vụ này
* Giá trị trả về : Không có
* Mức độ ưu tiên: 3
*****************************************
************************************************** ************
*/
static void vTaskMsgPro (void * pvParameters)
{
trong khi (1).
{
bsp_LedToggle (3.);
vTaskDelay (300);
}
}
/*
**************************************************
************************************************** *****
* tên chức năng: vTaskStart
* chức năng: bắt đầu công việc, đó là nhiệm vụ ưu tiên cao nhất, được sử dụng ở đây như là một
đèn LED nhấp nháy
* tham số: pvParameters được thông qua khi tạo tham số nhiệm vụ
giá trị * trở lại: Không
* Mức độ ưu tiên: 4
**********************************************

**************************************************
***************************************
*/
static void vTaskStart (* pvParameters void)
{
trong khi (1).
{
/ * nhấp nháy LED * /
bsp_LedToggle (4.);


vTaskDelay (400);
}
}
/*
***** **************************************************
**************************************************
* Tên Chức năng: AppTaskCreate
* Chức năng: Tạo các nhiệm vụ ứng dụng
* Tham số: Không
* Return Value: Không
****************************
************************************************** ***************************
*/
static void AppTaskCreate (void)
{
xTaskCreate (chức năng vTaskTaskUserIF, / nhiệm vụ * * /
"vTaskUserIF", / * tên công việc * /
512, / * nhiệm vụ ngăn xếp kích thước, đơn vị từ, ví dụ: 4 byte * /
NULL, / * thông số nhiệm vụ * /

1, / * nhiệm vụ ưu tiên * /
& xHandleTaskUserIF); / * nhiệm vụ xử lý * /

xTaskCreate (vTaskLED, / * nhiệm vụ chức năng * /
"vTaskLED", / * nhiệm vụ tên * /
512, / * nhiệm vụ ngăn xếp kích thước, đơn vị từ, ví dụ: 4 byte * /
NULL, / * thông số nhiệm vụ * /
2, / * Nhiệm vụ ưu tiên * /
& xHandleTaskLED); / * nhiệm vụ xử lý * /
xTaskCreate (vTaskMsgPro, / * chức năng nhiệm vụ * /
"vTaskMsgPro", / * tên nhiệm vụ * /
512, / * nhiệm vụ ngăn xếp kích thước, đơn vị từ, ví dụ: 4 byte * /
NULL, / * thông số nhiệm vụ * /
3, / * nhiệm vụ ưu tiên * /
& xHandleTaskMsgPro ); / * nhiệm vụ xử lý * /

xTaskCreate (vTaskStart, / * chức năng nhiệm vụ * /
"vTaskStart", / * tên nhiệm vụ * /


512, / * kích thước của ngăn xếp công việc, đơn vị từ, ví dụ: 4 byte * /
NULL, / * thông số nhiệm vụ * /
4, / * ưu tiên nhiệm vụ * /
& xHandleTaskStart); / * nhiệm vụ xử lý * /
}
5.3 STM32F407 ghép hệ thống FreeRTOS

5.3.1 FreeRTOS hệ điều hành di cư
đầu tiên chuẩn bị một đơn giản trần mẫu kim loại kỹ thuật, kỹ thuật sản xuất các mẫu không
giải thích, trọng tâm ở đây là để dạy cho bạn hệ thống ghép FreeRTOS. Mẫu dự án đã được

chuẩn bị như trong Hình 5.2 ( chúng tôi cũng có thể tạo bất kỳ mẫu dự án khác mà không giới
hạn ):

Hình 5.2 Tiêu bản dự án


Khi bạn đã sẵn sàng mẫu dự án của mình, bạn đã sẵn sàng di chuyển. Điều đầu tiên cần làm là
đặt tất cả các tệp nguồn yêu cầu vào mẫu dự án . Sau sáu bước sau đây để tất cả mọi người giải
thích, tất nhiên, không giới hạn sự cần thiết phải sử dụng các phương pháp sau để thêm mã
nguồn cho dự án, miễn là các tập tin cần thiết có thể được thêm vào mẫu dự án.
Bước 1: Từ trang web tải về
phiên bản V8.2.3, đây là loạt 8.x cao nhất mà phiên bản, phiên bản 9.0 vẫn đang trong giai đoạn
thử nghiệm , Chúng tôi không sử dụng tạm thời.
FreeRTOSV8.2.3.zip và FreeRTOSV8.2.3.exe nội dung là như nhau, nhưng tỷ lệ nén suffix exe
cao hơn. Trích xuất sau khi tải về.

Bước 2: Tạo một thư mục FreeRTOS trong mẫu dự án

Bước 3: Thêm các tập tin nguồn vào thư mục thích hợp
gói đường FreeRTOSV8.2.3: FreeRTOSV8.2.3 \ FreeRTOS \ file nguồn mà tất cả những điều
sau đây


×