📄 main.c
字号:
#include "..\include\MicroROS.h"
#if SEMAPHORE_EN > 0
SEM sem1;
#endif
#if MUTEX_EN > 0
MUTEX mutex1;
#endif
#if MAILBOX_EN > 0
MAILBOX mailbox1;
#endif
TASK_DEF(led,20,5);
#if MAILBOX_EN > 0
TASK_DEF(mail1,20,7);
#endif
TASK_DEF(led2,20,3);
void delay(WORD dd)
{
while (dd--);
PORTD ^= BV(3);
}
void led2(void)
{
WORD dd = 0x3;
DDRE |= BV(1);
while (1){
#if MUTEX_EN > 0
OS_MutexLock(&mutex1,LIMITLESS);
#endif
PORTE ^= BV(1);
OS_TaskSleep(30);
if (dd < 50)
dd ++;
else
dd = 0;
#if MUTEX_EN > 0
OS_MutexUnLock(&mutex1);
#endif
#if SEMAPHORE_EN > 0
OS_SemaphorePost(&sem1,1);
#endif
OS_TaskSleep(30);
#if MAILBOX_EN > 0
OS_MailBoxPost(&mailbox1,&dd);
#endif
}
}
#if MAILBOX_EN > 0
void mail1(void)
{
WORD * ptr;
while (1) {
OS_MailBoxPend(&mailbox1,(void **)&ptr,LIMITLESS);
delay(*ptr);
}
}
#endif
void led(void)
{
DDRB |= 0x80;
OS_TaskCreate(GetTaskPid(led2));
#if MAILBOX_EN > 0
OS_TaskCreate(GetTaskPid(mail1));
#endif
while (1){
#if MUTEX_EN > 0
OS_MutexLock(&mutex1,LIMITLESS);
#endif
PORTB ^= 0x80;
OS_TaskSleep(20);
#if MUTEX_EN > 0
OS_MutexUnLock(&mutex1);
#endif
#if SEMAPHORE_EN > 0
OS_SemaphorePend(&sem1,1,LIMITLESS);
#endif
OS_TaskSleep(20);
}
}
void OS_TimeHook(void)
{
}
void main(void)
{
OS_KernelInit();
#if SEMAPHORE_EN > 0
OS_SemaphoreCreate(&sem1,0);
#endif
#if MUTEX_EN > 0
OS_MutexCreate(&mutex1,2);
#endif
#if MAILBOX_EN > 0
OS_MailBoxCreate(&mailbox1);
#endif
MCUCR |= BV(SE);
OS_TaskCreate(GetTaskPid(led));
OS_Start();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -