|
一般,我们使用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运行情况的功能。接下来我们通过串口和设备查看执行情况。
设备运行情况:
|
|