最近在看嵌入式系统,可能看得资料不是很详细,而且结合了些小程序去看,提出以下疑惑。
1,信号量发生任务发生了个信号量,等待信号量任务执行一遍,并没有返回信号。 一个信号是不是只能用一遍就没了。因为程序是一个按键发送一次,喇叭就响一次。
2,在高优先级任务中,发生了一次中断,或是延时,如果任务就绪表的任务没有高过当前运行的任务,是不是不会切换任务?
3,因为任务的时钟节拍设置成了5MS,如果有任务低于5MS就要处理一次,比如信号采集,US级,那该怎么办?
4,OSSchedLock();和OS_ENTER_CRITICAL(); 有什么区别,防止中断,中断就是会发生任务调度的。。不懂。。
5,在队列和消息这里,我怎么分辨不出里面的区别,都是给了个消息的指针,还有队列在一开始创建了个数组,如果我不用数组又怎么样。还有数据采集任务可不可以用消息队列的方法传递给数据处理任务??是必须这么做,任务间的通信吗?
希望有了解嵌入式系统的人解答疑惑。。。谢谢
此帖出自
小平头技术问答
2 是不会切换 这就是为什么ucos要在每个任务里加上延时(任务调度)函数,需要释放CPU。
3 5ms 对于RTOS来说,算是可以处理很多情况了,这个数也可以改,但因此带来的系统开销会变得很大,信号采集如果不是很小的US级,可以采用中断,如果是很小的us级采集,还要伴随着对采集而来的数据做运算,拟合......这个就要看你选择的cpu的性能了,性能达不到,就算不用RTOS,裸机跑也是很“困难的”。
4 看名字就应该知道,一个是上锁,一个是告诉系统进入了中断函数。
5 这个问题很含糊,看具体情况,甚至不用消息队列的发送方式,用DMA都行。
一周热门 更多>