📄 main.c
字号:
#include "..\INC\includes.h"
#define STACKSIZE 0x8ff
U16 valu;
OS_EVENT *TextBox;
OS_EVENT *ReciveBox;
extern void Show_corporationname(U8 LcdBuffer);
char Id1 = '1';
char Id2 = '2';
unsigned int Stack1[STACKSIZE]={0};
unsigned int Stack2[STACKSIZE]={0};
char * Change_String(char *fmt,...)
{
int i = 0;
va_list ap;
char string[256];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
va_end(ap);
return string;
}
/*******************************MAIN**********************************************/
void Main(void)
{
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
Port_Init(); // 系统初始化
Uart_Init(0,115200); //Uart_Init(FCLK/4,115200);
Uart_Select(0);
Delay(0); //calibrate Delay()
OSInit(); //使用ucos提供的任何功能之前必须调用OSInit()函数
OSTimeSet(0); // 设置当前系统时钟数值
TextBox = OSMboxCreate((void *)0); // 创建消息邮箱
ReciveBox = OSMboxCreate((void *)0); // 创建消息邮箱
Uart_Printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
Uart_Printf(" **********************************************************\n\n");
Uart_Printf(" ****************浙江天煌科技实业有限公司******************\n\n");
Uart_Printf(" *************THUDC-1型嵌入式ARM实验/开发系统**************\n\n");
Uart_Printf(" *************基于UC/OS-II的消息邮箱应用实验**************\n\n");
Uart_Printf(" **********************************************************\n\n\n");
Uart_Printf(" 请按设备键盘向邮箱发送消息...\n\n");
GUI_Init();
LCD_Init_Controler();//Lcd_Init(MODE_CSTN_8BIT);
Lcd_CstnOnOff(1);
GUI_SetBkColor(GUI_CYAN);
GUI_SetColor(GUI_BLACK);
GUI_SetFont(&GUI_Font_HZK16);
GUI_Clear();
GUI_DispStringAt("浙江天煌科技实业有限公司",60,30);
GUI_SetColor(GUI_BLUE);
GUI_DispStringAt("THUDC-1型嵌入式ARM实验/开发系统",35,55);
GUI_DispStringAt("基于UC/OS-II的消息邮箱应用实验",40,80);
GUI_SetColor(GUI_RED);
GUI_DispStringAt("--S3C2410--",110,105);
GUI_SetColor(GUI_MAGENTA);
GUI_DispStringAt("请按设备键盘向邮箱发送消息...",50,150);
Delay(DELAY_TIME);
OSTaskCreate(mainTask, (void *)&Id1, (void *)&Stack1[STACKSIZE - 1], 1);//建立任务
OSTaskCreate(HostTask, (void *)&Id2, (void *)&Stack2[STACKSIZE - 1], 2);//建立任务
OSStart(); //将控制权交给ucos内核,开始运行多任务
}
/*******************************TASK1**********************************************/
void mainTask(void *i)
{
char *textmsg;
U8 error;
while(1)
{
GUI_SetColor(GUI_MAGENTA);
GUI_SetFont(&GUI_Font_HZK16);
valu = Test_keyboard();
if(valu>=0 && valu<16)
{
textmsg = Change_String("%0x\t",valu);
OSMboxPost(TextBox,(void *)textmsg); // 向消息邮箱发送一个字符
OSMboxPend(ReciveBox,0,&error); // 等待应答
}
}
}
/*******************************TASK2**********************************************/
void HostTask(void *i)
{
U8 error;
char *recivemsg;
while(1)
{
recivemsg = (char *)OSMboxPend(TextBox, 0, &error); //等待TextBox邮箱的消息
GUI_Clear();
GUI_DispStringAt("邮箱收到消息为:",60,100);
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_Font32_ASCII);
GUI_DispStringAt(recivemsg,190,90);
Uart_Printf(" 邮箱收到消息为: ");
Uart_Printf(recivemsg);
Uart_Printf("\r");
OSMboxPost(ReciveBox, (void *)1); // 给出应答
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -