uC-OS2 V2.93 STM32L476 移植:环境搭建篇

前言

  • 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,新建 工程,选择 board NUCLEO-L476RG,双击,进行STM32L476 的配置

  • 这里基本上看一下即可,烧写引脚、串口引脚、LED 引脚,系统时钟配置:80MHz


Keil MDK5 工程

  • 如果生成的Keil MDK5 工程,想再修改配置,就双击 工程下的 STM32CubeMX 配置文件 stm32l476_ucosii_led.ioc 即可,如重新配置引脚、外设、时钟等

  • 生成的Keil MDK5 工程如下,点击编译可以正常编译通过。

  • 可以写一个 LED 闪烁的 简单的裸机程序,然后下载到 开发板,确认是否可以正常工作

裸机 LED 驱动

  • 默认生成的工程,LED 的引脚已经配置了,当然可以手动配置

  • 新建 led.c

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
c 复制代码
#ifndef __LED_H__
#define __LED_H__

void led_grn_ctrl(unsigned int bon);

#endif
  • 把 led.c 与 led.h 加入 Keil MDK5 的工程里面

  • 修改 main.c,让 LED 闪烁起来

c 复制代码
#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

  • 待续

小结

  • 本篇初步搭建 STM32 的裸机工程,裸机下 让 LED 闪烁起来

  • 添加基本的 LED 控制驱动 到工程

  • 接下来记录 uC-OS2 在 STM32 上的移植与配置

相关推荐
風清掦1 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报1 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
czwxkn1 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响1 小时前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
BackCatK Chen12 小时前
第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)
stm32·单片机·嵌入式硬件·保姆级教程·电机正反转·tmc2240·dir引脚控制
Hello_Embed18 小时前
libmodbus 移植 STM32(USB 串口后端篇)
笔记·stm32·单片机·嵌入式·freertos·libmodbus
羽获飞1 天前
从零开始学嵌入式之STM32——9.STM32的时钟系统
stm32·单片机·嵌入式硬件
wotaifuzao1 天前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报1 天前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_11011 天前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件