移植FreeRTOS
大家好,今天我给大家带来了移植FreeRTOS到STM32G070开发板的实验。
说起移植,其实这里也不会过多说明原理性的东西,如果有需要请自行查看。我觉得弄明白了更好。如果没有弄明白倒也不影响下面继续的DIY实验。其实,会应用RTOS也很厉害了。
在移植的过程主要还是Copy官方的示例,将对应的文件引入工程即可。
我在这里使用了FreeRTOS的原生代码,尚未使用包裹在CMSIS-RTOS API的RTOS框架。
我从STCubeMX中拷贝port.c与portmacro.h文件,Memmang文件夹中的heap4.c文件。
#define LED_TASK_PRIORITY (tskIDLE_PRIORITY + 3) static void ledTask(void *pvParameters); int main(void){ bsp_init(); xTaskCreate(ledTask, "blank heartbeat", configMINIMAL_STACK_SIZE, (void *)NULL, LED_TASK_PRIORITY, NULL); vTaskStartScheduler(); while (1) { ; } } static void ledTask(void *pvParameters){ TickType_t xLastLedTime; xLastLedTime = xTaskGetTickCount(); for (;;) { vTaskDelayUntil(&xLastLedTime, 100); bsp_led_blink(); } }
测试方法,我使用了新建一个task,该task仅每隔100ms切换一下LED灯的状态。
使用ST-Link v2将程序下载到开发板上,运行!可以看到LED开始快速闪烁了。