4 应用实例
main函数为RT-Thread Nano的主线程,我们再创建于一个led线程。
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
static void led_thread_entry(void* parameter)
{
GPIO_Configuration();
for (;;)
{
GPIO_SetBits(GPIOB, GPIO_Pin_0);
rt_thread_mdelay(500);
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
rt_thread_mdelay(500);
}
}
void led_thread_init(void)
{
static rt_uint8_t s_led_stack[256];
static struct rt_thread led_thread;
rt_err_t result;
result = rt_thread_init(&led_thread,
"led",
led_thread_entry,
RT_NULL,
(rt_uint8_t*)&s_led_stack[0],
sizeof(s_led_stack),
7,
5);
if (result == RT_EOK)
{
rt_thread_startup(&led_thread);
}
}
注意:
- main线程默认堆栈大小为512字节,如main线程任务量比较大,需调堆栈大小,否则导致线程堆栈溢出
- RT-Thread Nano默认配置不支持动态线程,因此采用静态方式创建线程
- RT-Thread Nano线程优先级默认最低为8,创建线程指定优先级不能超过该值
|