OpenEdv-开源电子网
标题:
关于ucos-ii中printf函数调用的问题
[打印本页]
作者:
lilinkai
时间:
2015-8-15 21:14
标题:
关于ucos-ii中printf函数调用的问题
最近移植ucos-ii到STM32板子上时发现一个问题,一调用printf函数的话任务直接不能运行,系统死机,希望大神指点!!!是不是printf函数用的是DOS属于不可重入函数???
作者:
lilinkai
时间:
2015-8-15 21:14
回复【2楼】Llinuxu:
---------------------------------
找到原因了,之前正点原子的资料里忽略了一个很重要的问题,那就是在任务建立之前,ucos初始化之前要进行的一步就是关闭所有中断!在OS_CPU_a.asm中加两句作为输出函数用EXPORT声明一下,
CPU_IntDis
CPSID I
BX LR
CPU_IntEn
CPSIE I
BX LR
以及在OS_CPU.H中加上C的声明。在创建任务之前调用关闭所有中断!
作者:
Llinuxu
时间:
2015-8-15 22:57
printf函数会占用额外的空间,可能是你的栈空间开小了才会导致死机,另外,用该函数需要用另一个函数来映射你的具体串口,我相信这个你肯定是映射了的!
作者:
lilinkai
时间:
2015-8-16 10:24
回复【2楼】Llinuxu:
---------------------------------
我就是在mian函数中调用的,在任务创建之前就调用了,应该不存在栈空间小的问题,映射我已经映射了。
作者:
lilinkai
时间:
2015-8-16 10:27
回复【2楼】Llinuxu:
---------------------------------
我尝试了一下在任务中调用printf函数是没问题的,但是在任务建立之前调用printf函数的话,printf函数运行之后的程序就直接死了,不清楚这里面到底什么原因。
作者:
lilinkai
时间:
2015-8-16 10:36
回复【2楼】Llinuxu:
---------------------------------
我昨天尝试了一天发现在任务创建之前调用printf函数的话就容易导致ucos死机,如果在任务中调用printf函数的话就没问题,不清楚这里面是什么原因。
作者:
vinnar
时间:
2016-11-3 17:18
printf语句没有执行,其它都没问题是怎么回事?
欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/)
Powered by Discuz! X3.4