本帖最后由 TinySnail 于 2014-10-28 09:10 编辑
void adc_task(void *pdata)
{
InitAdc();
InitDma();
//TIM3_Int_Init(155,719);
TIM3_Int_Init(155,71);//156微秒采集一次
while(1)
{
OSTimeDlyHMSM(0,0,0,50);
}
}
void dac_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
OSTimeDlyHMSM(0,0,0,200);
//OS_ENTER_CRITICAL();
Dac1_Init();
Dac1_Set_Vol(0);
//OS_EXIT_CRITICAL();
while(1)
{
OSTimeDlyHMSM(0,0,0,10);
}
}
当TIM3_Int_Init(155,719);定时为1.56ms时,dac先等待2秒,采样9次后成功进入Dac1_Init();正常。
同样其他条件下,当采样定时为156μs时
dac先等待200ms,程序到不了dac延时后面的任务执行了。也就是不能被dac抢占。dac延时之后的程序无法执行。
dac先等待40ms,同上
dac先等待20ms,则adc定时无采集,直接跑dac后面的程序。
为什么采样时间短到一定程度,就不能被高优先级的其他任务抢占了?
adc定时时间只能是156微秒了,怎么才能执行dac延时后面的程序?
|