序文
-
uC-OS2 は比較的古典的な RTOS ですが、現在はソフトウェアの認可が変更されており
Apache License Version 2.0
、無料で商用利用が可能です。 -
uC-OS2 の最新バージョンは V2.93 で、RTOS の設計思想を検討する予定なので、既存の開発ボード: STM32L476RG プラットフォームである NUCLEO-L476RG を移植して研究したいと考えています。
開発環境
-
win10 64ビット
-
Keil uVision5、MDK V5.36
-
uC-OS2 V2.93
-
開発ボード:NUCLEO-L476RG、MCUは
STM32L476RG
-
STM32CubeMX 6.9.1、STM32 のベアメタル プロジェクトの生成に使用
STM32 ベアメタル プロジェクト
-
まずダウンロードしてインストールします
STM32CubeMX 6.9.1
。これは、Keil MDK または IAR STM32 プロジェクトを生成できる ST の強力なプロジェクト構成生成 IDE であり、同時に STM32 HAL ライブラリの構成、システム クロック、ピン、ペリフェラルなどの構成を行うことができます。予備的なベアメタル プロジェクト。 -
を開き
STM32CubeMX
、新しいプロジェクトを作成し、ボードを選択しNUCLEO-L476RG
、ダブルクリックして STM32L476 を設定します。 -
基本的にはここを見てください。プログラミング ピン、シリアル ポート ピン、LED ピン、システム クロック構成: 80MHz
Keil MDK5 プロジェクト
-
生成された Keil MDK5 プロジェクトの構成を変更したい場合は、プロジェクトの下にある STM32CubeMX 構成ファイルをダブルクリックするだけです
stm32l476_ucosii_led.ioc
(ピン、ペリフェラル、クロックなどの再構成など)。 -
生成された Keil MDK5 プロジェクトは次のようになります。[コンパイル] をクリックして通常通りコンパイルします。
-
LED を点滅させる単純なベアメタル プログラムを作成し、それを開発ボードにダウンロードして、正常に動作するかどうかを確認できます。
ベアメタル LED ドライバー
-
デフォルトで生成されたプロジェクトではLEDピンが設定されていますが、もちろん手動で設定することも可能です
-
新しいled.c
#include "main.h"
void led_grn_ctrl(unsigned int bon)
{
if (bon == 0x01) /* LEDG ON */
{
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
}
}
- 新しいled.h
#ifndef __LED_H__
#define __LED_H__
void led_grn_ctrl(unsigned int bon);
#endif
-
led.c と led.h を Keil MDK5 プロジェクトに追加します
-
main.c を変更して LED を点滅させる
#include "main.h"
#include "led.h"
UART_HandleTypeDef huart2;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART2_UART_Init();
while (1)
{
led_grn_ctrl(1);
HAL_Delay(1000);
led_grn_ctrl(0);
HAL_Delay(1000);
}
}
- led.c をプロジェクトに追加し、led.h ヘッダー ファイル パスを設定し、それをコンパイルして開発ボードにダウンロードすると、開発ボード上の LED が点滅し始めます。現在は 1 秒に 1 回点滅しています。
uC-OS2をダウンロード
-
git clone を使用します: ダウンロード アドレスhttps://github.com/weston-embedded/uC-OS2.git
-
git clone https://github.com/weston-embedded/uC-OS2.git
- つづく
まとめ
-
この記事では、最初に STM32 のベアメタル プロジェクトをビルドし、ベアメタルの下で LED を点滅させます。
-
基本的な LED 制御ドライバーをプロジェクトに追加する
-
次に、STM32 での uC-OS2 の移植と構成を記録します。