1、首先,新建一个STM32CubeMX工程,在工程的“Pinout”页展开"FreeRTOS”项,勾选“Enabled”使能FreeRTOS功能。
2、原则上,使能FreeRTOS后即可直接生成代码,但是会弹出下面的对话框。原因在于选择了“Syst坡纠课柩ick”做时间基准,洹彭岣啬而通常FreeRTOS避免直接使用它做时间基准,点击“Yes”可以忽略警告,如果不放心那么点击“No”重新编辑。
3、回到工程界面,切换到“Pinout”页,展开左侧的“SYS”,在Timebase Source右侧的列表中选择SysTick以外的单元,比如"TIM2",如果该TIM为灰色那么肯定是被其他功能占用了。
4、设置完SYS后,重新生成代码,这里选择的是Keil工程。
5、使用Keil打开刚刚生成的功臣改代码,切换到main.c,在main函数中会看到下面的代码: /涯箨唁峦* Create the thread(s) */ /* definition and creation of defaultTask */ osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128); defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);这里实际上市创建了一个名为“defaultTask”的任务,它的任务函数名为StartDefaultTask,优先等级为Normal,堆栈长度128 。同时使用osThreadCreate创建该任务,赋值给defaultTaskHandle句柄。
6、右击osThreadDef选择“Go to definition of 'osThreadDef'”可以查看其详细定义。
7、我们可以在任务函数StartDefaultTask中添加自己的代码,比如调用printf打印一串字符。注意调用printf需要先实现fputc函数。
8、将代码烧录到PCB,测试如下。