前言
-
uC-OS2 是比较经典的 RTOS,如今软件授权已经改为
Apache License Version 2.0
,意味着可以免费商用了 -
当前 uC-OS2 的最新版本是: V2.93,打算研究一下 RTOS 的设计思想,所以想在已有的开发板:NUCLEO-L476RG,也就是 STM32L476RG 平台上进行移植、研究
开发环境
-
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
,这是个ST 强大的 工程配置生成 IDE,可以生成 Keil MDK 或者 IAR 的 STM32工程,同时配置好 STM32 HAL库,配置好系统时钟、引脚、外设等,这样一套下来,就有了一个初步的裸机工程。 -
打开
STM32CubeMX
,新建 工程,选择 boardNUCLEO-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秒闪烁一次
下载 uC-OS2
-
使用 git 克隆 : 下载地址 https://github.com/weston-embedded/uC-OS2.git
-
git clone https://github.com/weston-embedded/uC-OS2.git
- 待续
小结
-
本篇初步搭建 STM32 的裸机工程,裸机下 让 LED 闪烁起来
-
添加基本的 LED 控制驱动 到工程
-
接下来记录 uC-OS2 在 STM32 上的移植与配置