关于KEIL的RTX 堆栈溢出问题

关于KEIL的RTX 堆栈溢出问题

在MDK5下用RTX,之前用的好好的,这次出现了任务就堆栈溢出的问题,百度搜了一下,有说系统跑起来之前不能打开中断,而使能了microlib之后,系统是自动建好main任务,跑起来的,在RTX_CM_lib.h里
extern int main (void);
extern
const osThreadDef_t os_thread_def_main;
const osThreadDef_t os_thread_def_main = {(os_pthread)main, osPriorityNormal, 1U, 4*OS_MAINSTKSIZE };

#if defined (__CC_ARM)

#ifdef __MICROLIB
attribute((section(".ARM.Collect$$$$000000FF")))
void _main_init (void);
void _main_init (void) {
osKernelInitialize();
osThreadCreate(&os_thread_def_main, NULL);
osKernelStart();
for (;?;
}

现修改如下:

  1. 取消RTX_CM_lib.h的只读属性。鼠标悬停在该文档处,可以跳出来该文档的具体路径在这里插入图片描述,在资源管理器里找到该文档,右键属性,取消只读。

  2. 将_main_init函数更改如下:
    void _main_init (void) {
    // osKernelInitialize();
    // osThreadCreate(&os_thread_def_main, NULL);
    // osKernelStart();
    // for (;?;
    main();
    }

  3. main函数里执行完外设初始化后,初始化系统,创建任务,运行系统,
    osKernelInitialize();//内核初始化
    //创建任务
    osKernelStart();//启动系统

经长期观察,再没出现堆栈溢出的情况。

如果哪位大神知道原因,请告知,多谢

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值