最近把周慈航老师的《基于嵌入式实时操作系统的程序设计技术》的最后简易数字示波器的实验自己写了一下,遇到个问题,想向大家请教下。它里面有个采集周期选择,我在选择采集周期为系统时钟时,采集是在系统时钟钩子函数中完成的:
void OSTimeTickHook(void)
{
if((Screen==5)&&(Count>0))
{
SAMPLE.Sample[SAMPLE.N-Count]=((1.0*(T_Get_Adc(ADC_Channel_IN3))/4095*3.298*77/60-1)/3*100);
Count--;
OSQPost(ReMsgQeue,(void *)(0x02<<24|(SAMPLE.N-Count))); //通过发送消息队列给显示函数,显示采集的点
}
}
其他周期采集显示都没问题,但是用钩子函数采集的时候就有问题,即使我把系统时钟设置的很低,比如50ms,和其他采样周期相同时,采样显示时还是有问题,请问这个是什么原因?
下面这个是其他采样周期时的采样程序(以50ms为例),可以正常运行:
case 1: //50ms
for(i=0;i<SAMPLE.N;i++)
{
if(Screen!=5) break; //判断是否是采样界面
SAMPLE.Sample=((1.0*(T_Get_Adc(ADC_Channel_IN3))/4095*3.298*77/60-1)/3*100); //采样
OSQPost(ReMsgQeue,(void *)(0x02<<24|i)); //通过发送消息队列给显示函数,显示采集的点
delay_ms(50);
}
|