(3)TencentOS tiny移植到Stm32f103zet6(德飞莱)

按照GitHub给的教程,把TencentOS tiny 移植到keil:
TencentOS tiny 移植到STM32F103全教程(基于标准库)

1、…\TencentOS\kernel\core\tos_mutex.c(105): error: #136: struct “k_mutex_st” has no field “knl_obj”

  knl_object_alloc_set_dynamic(&the_mutex->knl_obj);

在这里插入图片描述
首先,指针the_mutex定义在此:

k_mutex_t *the_mutex;

然后,看k_mutex_t 的定义

typedef struct k_mutex_st {
#if TOS_CFG_OBJECT_VERIFY_EN > 0u
    knl_obj_t       knl_obj;
#endif

    pend_obj_t      pend_obj;
    k_nesting_t     pend_nesting;
    k_task_t       *owner;
    k_prio_t        owner_orig_prio;
    k_list_t        owner_anchor;
} k_mutex_t;

发现需要TOS_CFG_OBJECT_VERIFY_EN > 0u,这相比教程里的博客进行了代码更新,这是增加的代码,在编译时为了不报错,需要将tos_config.h中的TOS_CFG_OBJECT_VERIFY_EN0u改为1u在这里插入图片描述
在这里插入图片描述

2、编译,中断函数报错,按照教程里的修改中断函数即可解决

在这里插入图片描述

3、修改SysTick_handle中断函数

TencentOS-tiny内核需要Systick提供时钟节拍,在 SysTick_Handler 函数中添加 TencentOS tiny 的调度处理函数;
tos_knl_is_running() 函数判断内核是否正在运行;
os_tick_handler() 函数是系统用于更新时基用的。
在这里插入图片描述

此处参考:原文链接:TencentOS-tiny 移植到STM32F407(MDK)

4、运行

利用教程的主函数,运行

#include "stm32f10x.h"
#include "bsp_usart.h"
#include "tos_k.h"


k_task_t task;

k_stack_t task_stack[1024];

void test_task(void *Parameter)
{
    while(1)
    {
        printf("hello world!\r\n");
        tos_task_delay(1000);
    }
}

/**
  * @brief  主函数
  * @author 杰杰
  * @retval 无
  */
int main(void)
{
    k_err_t err;
       
    /*初始化USART 配置模式为 115200 8-N-1,中断接收*/
    USART_Config();

    printf("Welcome to TencentOS tiny\r\n");

    tos_knl_init(); // TOS Tiny kernel initialize
                                        
    err = tos_task_create(&task, 
                          "task1", 
                          test_task,
                          NULL, 
                          2, 
                          task_stack,
                          1024,
                          20);
    if(err != K_ERR_NONE)
        printf("TencentOS Create task fail! code : %d \r\n",err);
    
    tos_knl_start(); // Start TOS Tiny

}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淮杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值