概述
创建线程三要素:
1.线程栈
2.线程控制块
3.线程主体函数
在RTT中线程的创建方式有俩种:
- 静态创建
- 动态创建
从字面意思上还是比较好理解俩种方法的,静态创建就是提前申请好一点的空间,动态创建就是根据所需空间大小自动分配空间。
静态创建
所谓静态创建,就是在SRAM中提前给线程划分一部分内存空间,与线程有关的所有内存都在那一块内存空间中。此处模拟创建一个线程点亮led。
定义线程栈
RTT中,每一个线程都是独立的,所以每一个线程都有其单独的运行环境,线程的运行环境都保存在其栈空间中。线程的栈占用的是MCU内部的RAM,所以一款MCU能支持多少线程,就看其RAM有多大了。
定义线程栈的函数如下:
/* 栈空间地址对齐 */
ALIGN( RT_ALIGN_SIZE )
/* 定义一个数组,栈的空间大小就是1024*8字节 */
static rt_uint8_t rt_led_thread_stack[1024];
定义线程函数
线程实际上就是一个无限循环且不带返回值的C函数,所以定义线程函数如下:
static void led_thread_entry( void *parameter )
{
LED_ON;
rt_thread_delay( 500 );
LED_OFF