打印

探索者F407在开启中断的情况下调用MALLOC失败

[复制链接]
249|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第十代火影|  楼主 | 2018-7-11 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,在我的程序中,如果中断先在 my_mem_init(SRAMIN); 这一句之前完成配置,那么运行到 void mymemset(void *s,u8 c,u32 count)  {  
    u8 *xs = s;  
    while(count--)*xs++=c;  
}

这个函数中的while语句时,就会进入haltfault中断使板子死机。
并且调用 p=mymalloc(sramx,2048); 也会出现同样的死机情况。
但是调用 myfree(sramx,p); 则不会出现死机情况。


调整了顺序之后就不会死机,但奇怪的是,这样做后即使不先初始化外部SRAM而直接调用 my_mem_init(SRAMEX);
也并不会像例程那样死机,而是接着往下运行主循环。

还有一点就是,如果加入了MALLOC,板子复位后有时会出现LCD背景色没有设置成功的情况。
并且时不时地会在主循环里突然自动复位(可能是跑进了haltfault中断)


如果关闭中断,完全按照例程那样去写,应该没有问题,但是我习惯了加入中断。有没有不加入中断也能
完美调用MALLOC的方法?


PS.例程里MPU6050的函数也有和中断冲突的部分,只要调用了 inv_mpu.c 或者是 inv_mpu_dmp_motion_driver.c
的函数,比如说mpu_dmp_init() , mpu_dmp_get_data(),也同样会死机。


还请大神解疑。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

363

主题

363

帖子

0

粉丝