OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3027|回复: 0

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

[复制链接]

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-12-22
在线时间
18 小时
发表于 2018-12-22 19:12:16 | 显示全部楼层 |阅读模式
  如题,在我的程序中,如果中断先在 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(),也同样会死机。


还请大神解疑。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 08:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表