Email-FTP-RTSP协议实践研究

目录

  • 一、RT-thread Nano移植
  • 二、基于 CubeMX 移植 RT-Thread Nano
  • 三、添加 RT-Thread Nano 到工程
    • 1. 选择 Nano 组件
    • 2. 配置 Nano
    • 3. 中断与异常处理
  • 四、创建任务
  • 五、总结
  • 六、参考

一、RT-thread Nano移植

RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。
  下图是 RT-Thread Nano 的软件框图,包含支持的 CPU 架构与内核源码,还有可拆卸的 FinSH 组件:
请添加图片描述
支持架构: ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。

功能: 线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。

二、基于 CubeMX 移植 RT-Thread Nano

  1. 获取RT-Thread Nano软件包
      进入打开 CubeMX,从菜单栏 help进入Manage embedded software packages 界面,点击 From Url按钮,进入 User Defined Packs Manager界面,其次点击 new,填入上述网址,然后点击 check,如下图所示:
    请添加图片描述
    check通过后,点击OK 回到 User Defined Packs Manager 界面,再次点击 OKCubeMX 自动连接服务器,获取包描述文件。回到 Manage embedded software packages界面,就会发现 RT-Thread Nano 3.1.5 软件包,选择该软件包,点击 Install Now,如下图所示:
    请添加图片描述
    点击安装之后,弹出 Licensing Agreement,同意协议,点击 Finish,如下图所示:
    请添加图片描述
    等待安装完成,成功安装后,版本前面的小蓝色框变成填充的黄绿色,现象如下图所示:
    请添加图片描述
    至此,RT-Thread Nano 软件包安装完毕,退出 Manage embedded software packages界面,进入CubeMX主界面。

三、添加 RT-Thread Nano 到工程

1. 选择 Nano 组件

选中芯片型号之后,点击Softwares Packages->Select Components,进入组件配置界面,选择RealThread, 然后根据需求选择RT-Thread组件,然后点击OK按钮,如下图所示:
在这里插入图片描述
在这里插入图片描述

2. 配置 Nano

选择组件之后,对组件参数进行配置。在工程界面 Pinout & Configuration 中,进入所选组件参数配置区,按照下图进行配置
在这里插入图片描述

3. 中断与异常处理

RT-Thread 操作系统重定义HardFault_Handler、PendSV_HandlerSysTick_Handler中断函数,为了避免重复定义的问题,在生成工程之前,需要在中断配置中,代码生成的选项中,取消选择三个中断函数(对应注释选项是 Hard fault interrupt, Pendable request, Time base :System tick timer),最后点击生成代码,具体操作如下图 所示:
请添加图片描述

四、创建任务

创建两个线程
线程一的灯500ms闪烁一次
线程二的灯1000ms闪烁一次
新建app_rt_thread.c文件,并添加以下代码

#include "rtthread.h"
#include "main.h"
#include "stdio.h"
 
struct rt_thread led1_thread;
rt_uint8_t rt_led1_thread_stack[128];
void led1_task_entry(void *parameter);
 
//初始化线程函数
void MX_RT_Thread_Init(void)
{
	//初始化LED1线程
	rt_thread_init(&led1_thread,"led1",led1_task_entry,RT_NULL,&rt_led1_thread_stack[0],sizeof(rt_led1_thread_stack),3,20);
	//开启线程调度
	rt_thread_startup(&led1_thread);
}
 
//主任务
void MX_RT_Thread_Process(void)
{
	printf("Hello RT_Thread!!!");
	rt_thread_delay(2000);
}
 
//LED1任务
void led1_task_entry(void *parameter)
{
	while(1)
	{
		HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9, GPIO_PIN_RESET);
		rt_thread_delay(500);
		HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9, GPIO_PIN_SET);
		rt_thread_delay(500);
	}
}

在main函数的while循环前创建线程

  MX_RT_Thread_Init();

  while (1)
  {
		HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10);
	    rt_thread_delay(1000);
  }

编译烧录
请添加图片描述

五、总结

本文介绍了如何基于 CubeMX 移植 RT-Thread Nano,并说明生成代码工程的步骤。

六、参考

基于 CubeMX 移植 RT-Thread Nano

本文转自 https://blog.csdn.net/YangMax1/article/details/122026363,如有侵权,请联系删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值