📄 main.c
字号:
/*
**********************************Copyright (c) ****************************
* cwg
* All Rights Reserved
* QQ:7084394
*
*---------------------------------File Info---------------------------------
*File Name :main.c
*Descriptor :main task
*Create By :ChenWeiGuo
*Create Date :2007-4-27
*Version :V1.0
*Note :
*
*---------------------------------------------------------------------------
*Modified By :
*Modified Date :
*Version :
*Note :
*
****************************************************************************
*/
#include "config.h"
/*任务定义*/
AVRX_GCC_TASKDEF(MainTask, 40, 0);
AVRX_GCC_TASKDEF(UartTask, 40, 1);
/*全局系统变量*/
/*软件定时器*/
TimerControlBlock Timer1,Timer2;
/*超时等待事件定义*/
//TimerMessageBlock TimerOut;
/*事件定义*/
//MessageControlBlock LedMessage;
/*队列定义*/
//MessageQueue MyQueue;
/*信号量定义*/
/***************************************************************************
*Function Name
*Description :定时器0比较中断函数,1ms中断一次,自动重载
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :IntProlog,AvrXTimerHandler,Epilog
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
#pragma optimize=z 4
AVRX_SIGINT(SIG_OUTPUT_COMPARE0)
{
IntProlog(); //内核堆栈切换
AvrXTimerHandler(); //时钟队列管理
Epilog(); //返回任务堆栈
}
/***************************************************************************
*Function Name
*Description :定时器2比较中断函数,100us中断一次,自动重载
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :IntProlog,Epilog
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
#pragma optimize=z 4
AVRX_SIGINT(SIG_OUTPUT_COMPARE2)
{
IntProlog(); //内核堆栈切换
Epilog(); //返回任务堆栈
}
/***************************************************************************
*Function Name :MainTask
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void MainTask(void)
{
while(1)
{
/*等待消息*/
AvrXDelay(&Timer1, 1000); //1S 延时
LED = LED ^ 0x20;
}
}
/***************************************************************************
*Function Name :OsInit
*Description :系统堆栈和系统工作节拍初始化
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :AvrXSetKernelStack
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void OsInit(void)
{
/*设置系统内核堆栈,默认堆栈*/
AvrXSetKernelStack(0);
/*设置睡眠模式*/
MCUCR = (1 << SE);
/*定时器0为比较模式*/
TCCR0 = TMC8_CK256;
/*比较值*/
OCR0 = TCNT0_INIT;
/*开定时器0比较中断*/
TIMSK = (1 << OCIE0);
return;
}
/***************************************************************************
*Function Name :SoftInit
*Description :系统运行前参数初始化
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :InitUart
***
*Create By :ChenWeiGuo
*Create Tate :2007-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void SoftInit(void)
{
/*控制灯设置为输出*/
LEDDDR |= BV(5);
/*串口初始化*/
InitUart();
/*定时器2初始化*/
TIMSK &= ~BV(OCIE2);
/*分频系数为8,比较模式*/
TCCR2 = ((1 << WGM21) | (1 << CS21));
/*定时100us*/
OCR2 = 100;
TIMSK |= BV(OCIE2);
return;
}
/***************************************************************************
*Function Name :UartTask
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2006-9-25
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
void UartTask(void)
{
uint8 byData;
while(1)
{
/*等待消息*/
while(GetUart1Data(&byData) == ERROR)
{
AvrXDelay(&Timer2, 1); //1ms 延时
}
SendUart1String(&byData, 1);
}
}
/***************************************************************************
*Function Name :main
*Description :
*Input parameters :
*Return Values: :
*Global Variables :
*Calling Modules :
***
*Create By :ChenWeiGuo
*Create Tate :2006-4-27
***
*Modified By :
*Modified Date :
*Note :
****************************************************************************/
int main(void)
{
/*系统初始化*/
OsInit();
SoftInit();
/*创建任务*/
AvrXRunTask(TCB(MainTask));
AvrXRunTask(TCB(UartTask));
/*切换到第一个任务的堆栈区*/
Epilog();
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -