📄 main.c
字号:
#include "..\ucos-ii\includes.h" /* uC/OS interface */
#include "uhal.h"
#include "driven.h"
#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
///******************任务定义***************///
OS_STK SYS_Task_Stack[STACKSIZE]= {0, }; //system task刷新任务堆栈
#define SYS_Task_Prio 1
void SYS_Task(void *Id); //(接触屏)键盘管理任务
OS_STK Task1_Stack[STACKSIZE]={0, };
void Task1(void *Id); //显示任务
#define Task1_Prio 13
OS_STK Task2_Stack[STACKSIZE]={0, };
void Task2(void *Id); //显示时间任务
#define Task2_Prio 14
OS_STK Task3_Stack[STACKSIZE]={0, };//任务3,(小)键盘输入 1122
void Task3(void *Id);
#define Task3_Prio 12
U32 Sub_Mode; //全局状态变量
U8 state=NORMAL;
U8 esc=ESCAP;
U8 number=0;
U8 numlock=0;
extern int term_length;
extern RTC_REG RTC_data, RTC_Sdata;
extern char intstr[9];
int main(void)
{
ARMTargetInit(); // do target (uHAL based ARM system) initialisation //
LCD_Init();
dis_main();
//Begin OS
OSInit();
OSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_Stack[STACKSIZE-1], SYS_Task_Prio);
OSTaskCreate(Task1, (void *)0, (OS_STK *)&Task1_Stack[STACKSIZE-1], Task1_Prio );
OSTaskCreate(Task2, (void *)0, (OS_STK *)&Task2_Stack[STACKSIZE-1], Task2_Prio );
OSTaskCreate(Task3, (void *)0, (OS_STK *)&Task3_Stack[STACKSIZE-1], Task3_Prio );//任务3,键盘输入
OSStart(); // start the Multitask system //
// never reached //
return 0;
}//main
/*
**********************************************************************************************************************
* SYS_Task
*
* 作者:胡仲华 曹攀
*
* 时间:2007年7月6日
*
* 描述:得到TCH接触屏的响应
*
* 参数:无
*
* 返回值:无
*
***********************************************************************************************************************
*/
void SYS_Task(void *Id)
{
//U32 lstate;
//OS_CPU_SR cpu_sr;
OSRunning=TRUE; //使能多任务切换
uHALr_InstallSystemTimer(); //启动Tick
Uart_Printf("\n In Task s");
for (;;)
{
GetTCHXY();
//Uart_Printf("\n In Main Task");
OSTimeDly(300);
}
}
/*
**********************************************************************************************************************
* SYS_Task
*
* 作者:孙周旋修改
*
* 时间:2007年7月10日
*
* 描述:得到各种状态的响应页面显示
*
* 修改:当无记录时
*
* 参数:Id:任务号
*
* 返回值:无
*
***********************************************************************************************************************
*/
void Task1(void *Id) //显示任务
{
OS_CPU_SR cpu_sr;
dis_main();
Uart_Printf("\n In Task 1");
for(;;)
{
//Uart_Printf("\n\tTask1 Get State=%d",state);
switch(state)
{
case DISTIME:
dis_time();
dis_main();
OS_ENTER_CRITICAL();
state = NORMAL;
OS_EXIT_CRITICAL();
break;
case DISDATE:
dis_date();
dis_main();
OS_ENTER_CRITICAL();
state = NORMAL;
OS_EXIT_CRITICAL();
break;
case DISREC:
REC_Display();
if(state==NOREC) //如果没记录
{
NoREC_Display(); //跳到无记录页面
}
dis_main();
OS_ENTER_CRITICAL();
state = NORMAL;
OS_EXIT_CRITICAL();
break;
case SETRTC:
RTC_Set_Display();
if(esc != ESCAP)
Rtc_Set();
dis_main();
OS_ENTER_CRITICAL();
state = NORMAL;
OS_EXIT_CRITICAL();
break;
case SETREC:
REC_Set_Display();
dis_main();
OS_ENTER_CRITICAL();
state = NORMAL;
OS_EXIT_CRITICAL();
break;
default:
break;
}
OSTimeDly(500);
}
}
void Task2(void *Id) //时钟显示任务
{
U32 bcolour=0xff;
U32 fcolour = 0x00;
U32* pput0 =(U32*)0xc0009b8;
Uart_Printf("\n In Task 2");
while(1)
{
Rtc_Read();
BCDU8toAsc(HexToInt(RTC_data.hour));
(void)LCD_Prints(intstr,fcolour,pput0,bcolour);//由于是32位指针,每字符横向8点,因此每向前一个字符32位指针+2
LCD_Putcf(':', fcolour, pput0+4,bcolour);
BCDU8toAsc(HexToInt(RTC_data.min));
(void)LCD_Prints(intstr,fcolour,pput0+6,bcolour);
LCD_Putcf(':', fcolour, pput0+10,bcolour);
BCDU8toAsc(HexToInt(RTC_data.sec));
(void)LCD_Prints(intstr,fcolour,pput0+12,bcolour);
}
Uart_Printf("\n In Task 22");
OSTimeDly(1000);
}
/*
**********************************************************************************************************************
* SYS_Task
*
* 作者:胡仲华 曹攀
*
* 时间:2007年7月6日
*
* 描述:任务3,得到键盘输入
*
* 参数:无
*
* 返回值:无
*
***********************************************************************************************************************
*/
void Task3(void *Id)
{
for (;;)
{
Uart_Printf("\n\tTask3 State=%d",state);
GetSETKEY();
OSTimeDly(200);
}
}
//end of the main.c model
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -