• 三、创建TencentOS tiny任务,测试移植结果
    • 1. 修改部分代码
      • 修改stm32l0xx_it.c的中断函数,在stm32l0xx_it.c文件中包含 tos.h 头文件
    • 2. 编写TencentOS tiny 测试任务
      • 在mian.c 中添加TencentOS tiny 头文件,编写任务函数
    • 3. 编译下载测试TencentOS tiny移植结果

    三、创建TencentOS tiny任务,测试移植结果

    1. 修改部分代码

    修改stm32l0xx_it.c的中断函数,在stm32l0xx_it.c文件中包含 tos.h 头文件

    三、创建TencentOS tiny任务,测试移植结果 - 图1

    在stm32l0xx_it.c文件中的PendSV_Handler函数前添加___weak关键字,因为该函数在TencentOS tiny的调度汇编中已经重新实现;同时在SysTick_Handler函数中添加TencentOS tiny的调度处理函数,如下图所示:

    三、创建TencentOS tiny任务,测试移植结果 - 图2

    2. 编写TencentOS tiny 测试任务

    在mian.c 中添加TencentOS tiny 头文件,编写任务函数

    1. #include "cmsis_os.h"
    2. //task1
    3. #define TASK1_STK_SIZE 256
    4. void task1(void *pdata);
    5. osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);
    6. //task2
    7. #define TASK2_STK_SIZE 256
    8. void task2(void *pdata);
    9. osThreadDef(task2, osPriorityNormal, 1, TASK2_STK_SIZE);
    10. void task1(void *pdata)
    11. {
    12. int count = 1;
    13. while(1)
    14. {
    15. printf("\r\nHello world!\r\n###This is task1 ,count is %d \r\n", count++);
    16. HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
    17. osDelay(2000);
    18. }
    19. }
    20. void task2(void *pdata)
    21. {
    22. int count = 1;
    23. while(1)
    24. {
    25. printf("\r\nHello TencentOS !\r\n***This is task2 ,count is %d \r\n", count++);
    26. osDelay(1000);
    27. }
    28. }
    29. int fputc(int ch, FILE *f)
    30. {
    31. if (ch == '\n')
    32. {
    33. HAL_UART_Transmit(&huart2, (void *)"\r", 1,30000);
    34. }
    35. HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
    36. return ch;
    37. }

    如图:

    三、创建TencentOS tiny任务,测试移植结果 - 图3

    继续在main.c 的mian函数中硬件外设初始化代码后添加TencentOS tiny的初始化代码:

    1. osKernelInitialize(); //TOS Tiny kernel initialize
    2. osThreadCreate(osThread(task1), NULL);// Create task1
    3. osThreadCreate(osThread(task2), NULL);// Create task2
    4. osKernelStart();//Start TOS Tiny

    如图:

    三、创建TencentOS tiny任务,测试移植结果 - 图4

    3. 编译下载测试TencentOS tiny移植结果

    三、创建TencentOS tiny任务,测试移植结果 - 图5

    按照上图指示,进行编译下载到开发板即可完成TencentOS tiny的测试,如下图所示,可以看到串口交替打印信息,表示两个任务正在进行调度,切换运行:

    三、创建TencentOS tiny任务,测试移植结果 - 图6