QC

How to use FreeRTOS for STM32F103C8 in Arduino IDE

 

How to use FreeRTOS for STM32F103C8 in Arduino IDE

Cách sử dụng FreeRTOS cho STM32F103C8 trong Arduino IDE

Tổng quan: FreeRTOS cho STM32F103C8

STM32F103C là bộ xử lý ARM Cortex M3 có thể sử dụng FreeRTOS. Hãy bắt đầu FreeRTOS cho STM32F103C8 trong Arduino IDE trực tiếp. Chúng tôi cũng có thể sử dụng Keil nhưng trong điều này, chúng tôi cần tải xuống và dán các tệp đã tải xuống vào đường dẫn Keil, đó là một quá trình hơi dài so với Arduino IDE. Để biết về định nghĩa phương pháp và tài liệu FreeRTOS, bạn có thể kiểm tra FreeRTOS STM32F103C8.

FreeRTOS là gì?

FreeRTOS có thể là một hệ điều hành thời gian thực (RTOS) miễn phí và mã nguồn mở chạy trên nhiều bộ vi điều khiển phổ biến, bao gồm cả STM32.

Hệ điều hành có thể là một phần của phần mềm quản lý các tài nguyên phần mềm và phần cứng khác trong hệ thống máy tính. Một hệ điều hành có mục đích chung thường được thiết kế với sự chú ý đến trải nghiệm người dùng.

Ví dụ: giả sử chúng tôi đang phát triển một ứng dụng trên hệ điều hành dành cho điện thoại di động. Người dùng có thể muốn phát trực tuyến phim, vì vậy chúng tôi có thể chia trải nghiệm phát trực tuyến đó thành hai công việc: tải xuống các phần video từ web dưới dạng Công việc 1 và hiển thị từng đoạn cho người dùng dưới dạng Công việc 2. Những công việc này có thể là một phần của một công việc tương đương chương trình, trong trường hợp đó, chúng có thể được triển khai dưới dạng các luồng chạy đồng thời.

Nếu bộ xử lý của chúng tôi chỉ có sẵn 1 lõi, ứng dụng phát trực tuyến của chúng tôi có thể phải nhanh chóng chuyển đổi giữa công việc 1 và công việc 2 để cung cấp cho người dùng ấn tượng rằng việc tải xuống và xem đang diễn ra tại một thời điểm tương đương.

Điều quan trọng là phải biết cách STM32F103C8 trong Arduino IDE đã đóng gói FreeRTOS. Mặc dù FreeRTOS là một khung phần mềm cơ bản cho phép chuyển đổi nhiệm vụ, lập lịch, v.v., nhưng chúng tôi sẽ không trực tiếp gọi đến FreeRTOS. ARM đã tạo thư viện CMSIS-RTOS, cho phép chúng tôi tạo các lệnh gọi tới RTOS bên dưới, do đó cải thiện tính di động của mã giữa các bộ xử lý ARM khác nhau.

How to download FreeRTOS for STM32F103C8 in Arduino IDE?

Vì vậy, chúng ta sẽ xem cách cài đặt FreeRtos cho Arduino theo các bước khôn ngoan.

Bước 1:

Trong Arduino IDE Ban đầu vào File -> Preferences. Sao chép liên kết dưới đây và dán vào trình quản lý hội đồng bổ sung như hình bên dưới. Liên kết tải xuống

Bước 2:

Bây giờ chúng ta cần tải xuống tệp thư viện FreeRTOS. Để tải xuống goto Sketch-> Bao gồm Thư viện-> Quản lý thư viện và nhấp vào Quản lý Thư viện.




Bước 3:

Bây giờ, đợi một giây, trong thanh tìm kiếm gõ FreeRTOS, nó sẽ hiển thị một số tệp thư viện, cuộn xuống và tìm kiếm STM32duino FreeRTOS của Richard Barry. Sau đó chọn thư viện đó và nhấp vào cài đặt. Sẽ mất một thời gian để cài đặt. Sau khi cài đặt hiển thị như đã cài đặt.


Bước 4:

Bây giờ Arduino của chúng tôi có thể sử dụng thư viện RTOS miễn phí cho STM32F103C8. Chúng tôi sẽ viết một chương trình nhấp nháy đơn giản cho led onboard và led rời.

Prerequisites


Chúng tôi cần phần cứng sau cho hướng dẫn này.

Bảng STM32F103C
FTDI
DẪN ĐẾN
Dây nhảy
Breadboard
Ở đây tôi đang sử dụng một đèn led trên bo mạch được kết nối PC13 và đèn led còn lại được kết nối riêng biệt được kết nối với PB11.




Làm cách nào để chạy hai tác vụ khác nhau trên STM32F103C8 bằng FreeRTOS?
Tôi đang sử dụng hai đèn LED, cho hai đèn LED tạo ra hai tác vụ mỗi đèn cho một đèn LED. Trong tác vụ này, Một đèn LED nhấp nháy trong khoảng thời gian một giây và đèn LED kia nhấp nháy trong khoảng thời gian 200ms. Bây giờ, hãy bắt đầu mã hóa cho hai đèn led nhấp nháy với FreeRTOS.

Tạo một bản phác thảo mới trong Arduino IDE, Sao chép và dán đoạn mã bên dưới vào bản phác thảo.

#include <MapleFreeRTOS821.h>
#define BOARD_LED_PIN PC13
#define LED_PIN PB11
 
static void task1(void *pvParameters) {
  for (;;) {
      vTaskDelay(1000);
      digitalWrite(BOARD_LED_PIN, HIGH);
      vTaskDelay(1000);
      digitalWrite(BOARD_LED_PIN, LOW);
  }
}
 
static void task2(void *pvParameters) {
  for (;;) {
      vTaskDelay(200);
      digitalWrite(LED_PIN, HIGH);
      vTaskDelay(200);
      digitalWrite(LED_PIN, LOW);
  }
}
 
void setup()
{
  pinMode(BOARD_LED_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  xTaskCreate(task1,"Task1",
              configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY + 2,NULL);
  xTaskCreate(task2,"Task1",
              configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY + 2,NULL);
  vTaskStartScheduler();
}
 
void loop()
{
}

Sau khi tải lên mã, bạn có thể thấy kết quả sau.





Error No module Onnx opencv

 Error No module Onnx opencv Lệnh :  pip install onnx==1.9 Mã lỗi PS F:\opencv_e\2.video> & C:/Users/youtb/Anaconda3/envs/virtualenv/...