嵌入式学习小组
直播中

张华

7年用户 1382经验值
私信 关注

请问ucos-ii中printf函数调用就死机该怎么办?

最近移植ucos-ii到STM32板子上时发现一个问题,一调用printf函数的话任务直接不能运行,系统死机,希望大神指点!!!是不是printf函数用的是DOS属于不可重入函数???

回帖(6)

张萍

2019-10-8 09:27:16
找到原因了,之前发烧友的资料里忽略了一个很重要的问题,那就是在任务建立之前,ucos初始化之前要进行的一步就是关闭所有中断!在OS_CPU_a.asm中加两句作为输出函数用EXPORT声明一下,
CPU_IntDis
        CPSID   I
        BX      LR
CPU_IntEn
        CPSIE   I
        BX      LR
以及在OS_CPU.H中加上C的声明。在创建任务之前调用关闭所有中断!
举报

陈发赫

2019-10-8 09:37:08
printf函数会占用额外的空间,可能是你的栈空间开小了才会导致死机,另外,用该函数需要用另一个函数来映射你的具体串口,我相信这个你肯定是映射了的!
举报

罗丹

2019-10-8 09:43:31
我就是在mian函数中调用的,在任务创建之前就调用了,应该不存在栈空间小的问题,映射我已经映射了。
举报

李霞

2019-10-8 09:53:23
我尝试了一下在任务中调用printf函数是没问题的,但是在任务建立之前调用printf函数的话,printf函数运行之后的程序就直接死了,不清楚这里面到底什么原因。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分