收藏官网首页
查看: 3955|回复: 0

[经验分享] 在ch32v307vct6上运行freertos

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-8-26 22:45:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
    一般,我们使用STM32的rtos,通常使用的是cmsis二次开发的rtos,基于freertos的内核上对部分函数进行了重新封装,用着不是很习惯。得益于ch32307系列非常大的rom和ram,在上面运行实时操作系统是最好不过了,下面我们来运行freertos看看。

我们使用的ide是MounRiver Studio,对于简单配置来说,还是很容易上手的,沁恒已经为我们移植好了各个芯片的freertos。


我们只需要,点击file,新建一个项目,在模板选项里选择freertos,然后选择对于的单片机,即可创建带有freertos的项目。


接下来,我们创建两个任务,测试运行情况。
首先创建两个任务句柄。
  1. TaskHandle_t MainTask_Handler;
  2. TaskHandle_t Task1_Handler;
复制代码
然后,编写两个任务函数
  1. void main_task(void *pvParameters)
  2. {
  3.     while(1)
  4.     {
  5.         printf("main task\n");
  6.         GPIO_SetBits(GPIOA, GPIO_Pin_0);
  7.         vTaskDelay(250);
  8.         GPIO_ResetBits(GPIOA, GPIO_Pin_0);
  9.         vTaskDelay(250);
  10.     }
  11. }
复制代码
  1. void task1_task(void *pvParameters)
  2. {
  3.     while(1)
  4.     {
  5.         printf("task1\n");
  6.         GPIO_ResetBits(GPIOA, GPIO_Pin_1);
  7.         vTaskDelay(500);
  8.         GPIO_SetBits(GPIOA, GPIO_Pin_1);
  9.         vTaskDelay(500);
  10.     }
  11. }
复制代码
这两个任务以不同的时间间隔点亮led灯

完成后,使用xtaskcreate创建对应的任务

xtaskcreate的具体用法是:xtaskcreate(任务函数指针,任务名称,栈的大小,传入参数,任务优先级,任务句柄)

对应的代码:
  1. xTaskCreate((TaskFunction_t )main_task, "main_task", 256, NULL, 1, &MainTask_Handler);
  2.         xTaskCreate((TaskFunction_t )task1_task, "task1_task", 256, NULL, 1, &Task1_Handler);
复制代码


到此已经完成了一个简单的用于测试freertos运行情况的功能。接下来我们通过串口和设备查看执行情况。


设备运行情况:


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表