在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]