我用small rtos遇到了一个奇怪的问题

2020-01-30 13:55发布

我用的芯片是STC12LE5A60S2,整个工作进度快完时,发现P2口工作不正常,先确认我的板是没有问题的,去掉我所有的程序部分,一点一点儿的找问题
最后发现引起P2口引脚脉冲的原因,是在调用信号量时出现的。
因为我在OS_CFG.H文件中,将信号量改为xdata时,如果改为idata则就不会引起P2.4 (不仅P24,P23也有,我怀疑整个P2都有脉冲)
#define OS_SEM_MEM_SEL       xdata 
因考虑到P2口是访问外部RAM的地线线,所以将AUX=0,禁止访问外部RAM,但仍会有,专门申请一个xdata 的变量,test++时,程序中并未出脉冲,所以确定是因为信号量引起的

xdata char test;
void TaskD(void)
{
    while (1)
    {
        #if 1
        OSSemPend(0,0);
         OSWait(K_TMO,5);
     OSSemPost(0);
         #else
         test++;
         if(test==0)OSWait(K_TMO,10);
         #endif
     OSWait(K_TMO,30);
    }
}
附近P24脚的故障波形图,如果不调用信号量,则就很好。也附上工程源文件,可直接编译,整了一天了,只得放下这个问题,赶进度了,请能人志士解答,并谢之!
0条回答

一周热门 更多>