单片机的操作系统同时处理怎么个好法?

  • 学过单片机的操作系统之后,一直很纠结,脑子一团糊涂
  • 书上说,操作系统看似同时运行两个任务,其实从真正意义上来说,MCU在同一时刻只运行了一个任务,两个任务每个任务运行一个时间片,从效果上看就好像同时运行两个任务,然后就开始纠结,那这样,操作系统不也是一个任务一个任务的运行嘛,那操作系统和裸机运行相比优势在哪呢?想啊想。。。就想到这么个例子。。。
  • 最近赶紧去学学单片机的操作系统去,感觉到它的好处了,,
/*裸机*/
while(1)//LED灯闪烁的同时,蜂鸣器鸣叫(LED、BEEP同时间隔500ms闪烁、鸣叫)
{
	LED=1;
	BEEP=1;
	LL_mDelay(500);
	LED=0;
	BEEP=0;
	LL_mDelay(500);
}
//如果,闪烁的频率和鸣叫的时间间隔不一样呢?
//LED每500ms闪烁,BEEP每200ms鸣叫,如何实现?

while(1)
{
	LED = 1;
	BEEP = 1;
	LL_mDelay(200);
	BEEP = 0;
	LL_mDelay(200);
	BEEP = 1;
	LL_mDelay(100);
	LED = 0;
	//....
	/*当然,真正用的时候不会用延迟,用定时器中断来处理就好,只是个示意*/
}

/*操作系统*/

osCreatTask LED_Task;
osCreatTask BEEP_Task;

void LED_Task(void)
{
	while(1)
	{
		LED = 1;
		LL_mDelay(500);
		LED = 0;
		LL_mDelay(500);
	}
}

void BEEP_Task(void)
{
	while(1)
	{
		BEEP =1 ;
		LL_mDelay(200);
		BEEP = 0;
		LL_mDelay(200);
	}

}












	
posted @ 2020-11-07 15:47  火红色祥云  阅读(41)  评论(0编辑  收藏  举报