我用的芯片是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脚的故障波形图,如果不调用信号量,则就很好。也附上工程源文件,可直接编译,整了一天了,只得放下这个问题,赶进度了,请能人志士解答,并谢之!
一周热门 更多>