两个问题:
1、用哪种模式好?
2、延时遇到问题,两种都试了下没用,
延时用的。无论写的delay_ms(3000)还是6000,延时最大只有1.2S,不科学呢,按道理只会拖后呀
//延时 nms,会引起任务调度
//nms:要延时的 ms 数
//nms:0~65535
void delay_ms(u32 nms)
{
if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//系统已经运行
{
if(nms>=fac_ms) //延时的时间大于 OS 的最少时间周期
{
vTaskDelay(nms/fac_ms); //FreeRTOS 延时
}
nms%=fac_ms; //OS 已经无法提供这么小的延时了,
//采用普通方式延时
}
delay_us((u32)(nms*1000)); //普通方式延时
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
时间是对的,是我看错了,抢占不会会 优先级高的运行的多呢?打扰了优先级低的,比如我串口中断接收GPS,任务里面解析,有时候就解析失败,数据不全
设置可能有些错了
假如不屏蔽串口中断,一直接数据收放缓冲区,任务不断去读缓冲区,怎么会丢数据。
我猜是你任务里的操作将一些中断屏蔽了。
在freertos有个宏叫什么可管理中断最高优先级的
昨天被这个宏搞的神经了,小于宏的中断优先级不能用freetos的api 。我用了,总是出错
一周热门 更多>