mmuyu 发表于 2023-8-26 22:45:29

在ch32v307vct6上运行freertos

    一般,我们使用stm32的rtos,通常使用的是cmsis二次开发的rtos,基于freertos的内核上对部分函数进行了重新封装,用着不是很习惯。得益于ch32307系列非常大的rom和ram,在上面运行实时操作系统是最好不过了,下面我们来运行freertos看看。

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


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


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

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

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

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

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


设备运行情况:


页: [1]
查看完整版本: 在ch32v307vct6上运行freertos