FreeRTOS任务
在裸机系统中,系统的主体是main函数里面顺序执行的无限循环,这个无限循环里面CPU按照顺序完成各种事情,在多任务系统中,我们根据功能不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务。
创建任务
定义任务栈
在裸机系统中,全局变量,有子函数调用,有中断发生等都存放在栈,栈是单片机RAM里面一段连续的内存空间,栈的大小一般在启动文件或者链接脚本里面指定,最后由C库函数_main进行初始化。
但是在多任务系统中,每个任务都是独立的,互不干扰的,所以要为每个任务都分配独立的栈空间,这个栈空间通常是一个预先定义好的全局数组,也可以是动态分配的一段内存空间,但他们都存在于RAM中。
要实现两个变量按照一定的频率轮流的翻转,每个变量对应一个任务,那么就需要定义两个任务栈,在多个任务系统中,有多少个任务就需要定义多少个任务栈。
任务栈其实就是一个预先定义好的全局数据,数据类型为StackType_t,大小由TASK1_STACK_SIZE这个 宏来定义,默认为128,单位为字,即512字节。这也是FreeRTOS推荐的最小任务栈。