在测试CH32V208的RT-Thread+NetLib移植。只有这两个线程+FinSH线程,一开始IDLE默认的256堆栈好像爆了,增加后,再加了一个线程,线程的运行函数如下:
static void _cc_entry(void *arg) { rt_tick_t ctick,peri_tick = rt_tick_from_millisecond(10); uint16_t inval; int i; ChgInfo *info; while(1) { rt_thread_delay(peri_tick); ctick = rt_tick_get(); inval = GPIO_ReadInputData(GPIOB); info = &chg_info[0]; if(info->chx_tick < ctick) { info->chx_tick = ctick; info->chx_state_cnt = inval; } } }
堆栈大小设置为4096,优先级只比netlib低,运行一段时间后,这个线程爆栈了。我是想不通这几行代码,为什么4K堆栈都爆。本来就没多少RAM的MCU,好像创建不了几个线程了。