初级会员

- 积分
- 167
- 金钱
- 167
- 注册时间
- 2013-12-1
- 在线时间
- 88 小时
|
本帖最后由 ssis909 于 2016-5-25 10:31 编辑
这是我的测试代码:
//************************************************************************************
void delay_ms(u32 delay_num)
{
u32 a,b;
for(a = delay_num;a > 0;a--)
{
for(b = 5000;b > 0;b--);
}
}
//************************************************************************************
void Test_Init(void)
{
delay_ms(8);
}
//************************************************************************************
void Hello(void)
{
OS_EVENT *p;
p = OSSemCreate(0);
if(p == (OS_EVENT *)0)
{
printf("\r\n SEM-FAIL \r\n");
}
else
{
printf("\r\n SEM-OK \r\n");
}
}
//************************************************************************************
void FuncDisplay(void *pdata)
{
pdata = pdata;
while(1)
{
OSTimeDlyHMSM(0,0,0,100);
}
}
//************************************************************************************
int main(void)
{
Initial_BSP();
SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC);
OSInit();
Test_Init();
Hello();
OSTaskCreate(FuncDisplay ,(void *)0,(OS_STK *)&StkRunDisplay[TASK_SIZE_DISPLAY - 1], 1);
OSStart();
}
我调试遇到这样的奇怪问题:
函数Test_Init中,延迟改为1~7之间的数,打印 "SEM-OK" ,表明创建信号量成功;
但是延迟改为大于7的数后,打印 "SEM-FAIL" ,表明信号量创建失败,真是x了狗了,弄半天找不到原因,什么情况?求解释~
|
|