RT移植STM32F103C8(基于CUBEMX移植)

一、RTthread

  • 官网链接

https://www.rt-thread.org/

二、RT-Thread特点和优势

  • RT-Thread 的主打特性是 “小而美的物联网操作系统”。

“小” 体现在 RT-Thread 的体积小,最小资源占用 1.2KB RAM 和 2.5KB flash。RT-Thread 可伸缩、易裁剪的特性,帮助用户在需要一个适用的操作系统的时候,轻松地进行裁减,适应到需要的场景,不占用过多的资源。

“美” 不单止代码质量和代码风格,还有 RT-Thread 的使用和开发体验,以及增加了小程序、SMP 多核调度、PSA 安全支持等多项实用的新功能,使得 RT-Thread 系统能实现灵活极简的应用开发,能扩展至众多高性能、高安全的应用领域。

“物联网” 则体现在 RT-Thread 针对物联网场景提供的众多组件和软件包,比如 AT组件、WiFi、蓝牙、LoRa、Sensor、AI 等等。以及针对安全和低功耗的优化,还有以 JS 为开发方式的柿饼 UI,都使其非常适用于 IoT 领域。

三、RT-Thread Nano

  • RT-Thread Nano 是一个极简的硬实时内核,其内存资源占用极小,功能包括任务管理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。对于系统资源紧张或是项目功能较为简单的,则可以选择基于 RT-Thread Nano 进行开发。比如家电、消费、医疗、工控领域的 32 位入门级 MCU。
    在这里插入图片描述

四、移植

  • RT-Thread有移植教程,就不重复描述了,下面是教程链接,要使用到串口打印信息,所以这里得在后面选上一个串口用于打印,顺便将PC13引脚勾选为gpiooutput,用于点灯确保程序正常运行。

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-cube/an0041-nano-port-cube

  • 说一下注意点,RT操作系统里的关联串口默认为usart2,不是usart1,如果使用的是usart1,需要在board.c里改一下在这里插入图片描述
  • 建立RT线程,执行子任务
//任务线程
struct rt_thread led_thread;
//任务栈
rt_uint8_t rt_led_thread_stack[128];
//任务函数
void print_task_entry(void *parameter);
 
//初始化线程函数
void MX_RT_Thread_Init(void)
{
	//初始化LED线程
	/*
		静态线程对象
		线程名
		线程入口函数
		线程入口参数
		线程栈地址
		线程栈空间大小
		线程优先级
		线程时间片
		
	*/
	rt_thread_init(&led_thread,"led",print_task_entry,RT_NULL,&rt_led_thread_stack[0],sizeof(rt_led_thread_stack),3,20);
	//开启线程调度
	rt_thread_startup(&led_thread);
}
 

 
//print任务
void print_task_entry(void *parameter)
{
	//1000ms闪烁一次
	while(1)
	{
		rt_kprintf("在线程里\r\n");
		rt_thread_delay(1000);
	}
}```

- 主函数里的内容,测试是否初始化完成并正常运行

```python
MX_GPIO_Init();
  MX_USART1_UART_Init();
 MX_RT_Thread_Init();
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
			HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
			rt_thread_mdelay(500);
			HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
			//HAL_UART_Transmit(&huart1,(uint8_t *)("hello world \r\n"),sizeof("hello world \r\n"),0xff);
			rt_kprintf("\n \\ | /\n");
			rt_thread_mdelay(500);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
  • 效果
    在这里插入图片描述

五、总结

  • 移植还是蛮简单的,只要按着步骤来就可以了,不过初始化的时候需要注意一下,如果要使用多线程,需要自己进行初始化,然后再开启任务线程,相较于ucosIII操作系统来说,RT的使用更加方便。相较于裸机程序来说,想要实现多任务只能控制延时,但太小的延时也不好控制,操作系统可以较好的解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值