[其他ST产品] ucos ii 移植到stm32f103ze上

[复制链接]
3884|41
 楼主| 两只袜子 发表于 2023-8-3 16:37 | 显示全部楼层 |阅读模式
采用别人移植好的代码。即所需函数已写好。
准备工作:
1、ucos ii源码
2、stm32库
步骤:
1、建工程。
工程目录为:
2176364cb672b5deeb.png
2、配置ucos ii
在os_cfg.h中配置相关功能
3、修改相关函数
ucos ii需要一个定时器,在stm32中采用systick定时器,因此需要配置systick定时器
void SysTick_Configuration(void)
{
//关计数
    SysTick_CounterCmd(SysTick_Counter_Disable);
    //关中断
    SysTick_ITConfig(DISABLE);
//配置SysTick的时钟源  此时为AHB时钟
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
//配置指系统句柄的优先级(Systick句柄  3号抢占优先级,0号子优先级)
NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 3, 0);
//设置重载值1ms中断 HCLK=8M时
SysTick_SetReload(800000);  
//使能Systick中断
SysTick_ITConfig(ENABLE);
    //使能Systick计数即启动计数
SysTick_CounterCmd(SysTick_Counter_Enable);
}

需要systick定时器中断,在中断里面调用ucos的相关函数,以此来作为ucos的时钟。
void SysTickHandler(void)
{
OS_CPU_SR  cpu_sr;
// OS_ENTER_CRITICAL();  //保存全局中断标志,关总中断
//   OSIntNesting++;
//   OS_EXIT_CRITICAL();  //恢复全局中断标志
OSIntEnter();
OSTimeTick();
OSIntExit();        
}


配置pendsv函数
ucos通过pendsv来实现任务调试,因此需要在启动代码中更改pendsv
将原来的PendSV改为
OSPendSV
否则,系统会卡在
OSStartHang
    B       OSStartHang                                         ; Should never get here

处。


 楼主| 两只袜子 发表于 2023-8-3 16:37 | 显示全部楼层
4、includes.h的编写


#ifndef  __INCLUDES_H__
#define  __INCLUDES_H__

#define   DEF_FALSE 0
#define   DEF_TRUE  1

#include    "ucos_ii.h"
#include "os_cpu.h"
#include "bsp.h"
#include    "app.h"
#include    "app_cfg.h"

#include    "stm32f10x_conf.h"
#include   



#if (uC_PROBE_OS_PLUGIN > 0)
#include   
#endif

#if (uC_PROBE_COM_MODULE > 0)
#include   

#if (PROBE_COM_METHOD_RS232 > 0)
#include   
#endif
#endif



#endif

5、bsp函数配置
stm32的相关硬件配置包括RCC、systick、NVIC、等,需要注意的是,systick定时器必须在OS启动后才能启动,否则,系统会崩溃。(这里有疑问,在OSStart执行前使能systick中断,系统 还是能运行)
6、编写相关任务函数。


总结,在移植UCOS时,需要编写的函数文件有includes.h、os_cpu.c、os_cpu_a.asm、os_cpu.h、需要配置的文件有os_cgf.h、中断和启动代码。
caigang13 发表于 2023-8-3 18:01 来自手机 | 显示全部楼层
第一个学习和使用的操作系统便是ucos-II
mollylawrence 发表于 2023-8-7 07:47 | 显示全部楼层
参考 uC/OS-II 的移植指南和 STM32F103ZE 的相关文档
maudlu 发表于 2023-8-7 08:06 | 显示全部楼层
stm32上移植ucos-ii出现硬件错误 OSStartHang
jonas222 发表于 2023-8-7 19:27 | 显示全部楼层
sqlite怎样移植到ministm32f103开发板的ucos操作系统
cemaj 发表于 2023-8-7 20:01 | 显示全部楼层
建议参考 uC/OS-II 的官方文档和移植指南,以及 STM32F103ZE 的参考手册和开发工具的文档
nomomy 发表于 2023-8-7 21:55 | 显示全部楼层
从 Micrium 官方网站下载 uC/OS-II 的源代码和文档。 获取到适用于 STM32F103ZE 的版本。
mnynt121 发表于 2023-8-7 22:25 | 显示全部楼层
如何在 ucos 中使用stm32的usb库
youtome 发表于 2023-8-7 22:56 | 显示全部楼层
根据 STM32F103ZE 的硬件特性,在 uC/OS-II 的配置文件中进行相应的配置。这包括配置时钟频率、堆栈大小、中断优先级等。
bestwell 发表于 2023-8-9 17:16 | 显示全部楼层
uC/OS-II 使用中断来处理任务切换和时钟节拍等功能。在移植过程中,需要将中断向量表正确配置到正确的地址,并将 uC/OS-II 所需的中断优先级配置为适当的值。
belindagraham 发表于 2023-8-9 17:38 | 显示全部楼层
在 uC/OS-II 的框架下,编写应用程序代码。这包括创建任务、使用信号量、消息队列等。
yangxiaor520 发表于 2023-8-9 19:07 来自手机 | 显示全部楼层
F103现在性价比不高了,太贵了。
Stahan 发表于 2023-8-12 00:00 | 显示全部楼层
yangxiaor520 发表于 2023-8-9 19:07
F103现在性价比不高了,太贵了。

这价格还可以啊
bartonalfred 发表于 2023-8-14 10:04 | 显示全部楼层
stm32f103rc与stm32f103ze程序互通吗
sesefadou 发表于 2023-8-14 12:23 | 显示全部楼层
移植 uC/OS-II 是一项复杂的任务,需要对硬件和操作系统有深入的理解。
tabmone 发表于 2023-8-14 13:24 | 显示全部楼层
堆栈足够大以容纳 uC/OS-II 的任务堆栈和其他变量。
jkl21 发表于 2023-8-14 17:46 | 显示全部楼层
uCOS-II移植STM32如何进入休眠低功耗状态?
pl202 发表于 2023-8-14 20:01 | 显示全部楼层
在将UCOS-II移植到STM32F103ZE上时,需要对UCOS-II源码进行修改和烧写,以适应STM32F103ZE的硬件平台和软件环境。
wuhany 发表于 2023-8-14 20:24 | 显示全部楼层
没看出来要问什么问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8121

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部