📄 main.c
字号:
/*********************************************************
Project: ST FST(TDA7540)
File name: main.c
Description:
Write/Modify: Perry Liang
Time: 2006-1-24- 15:34:58
*********************************************************/
#define ROOT
#include "public.h"
/*********************************************
Function: main
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:45
*********************************************/
void main(void)
{
MCUInit();
LibInit();
SystemInit();
PowerInit();
KeyInit();
//DisplayInit();
AudioInit();
AmpInit();
RadioInit();
ClockInit();
RDSInit();
//DVDInit();
Motor_Init(); // modiy by jzq 2008 - 11- 28
IPOD_init();
TouchPanelInit();
#ifdef SUPPORT_TCON
//TFTBACKLED_Init();
//Reset_TFT();
#endif
for(;;)
{
AccCheck();
AccMain();
if(WakeUpTimer>0 ||System.AccMode!=ACCMODE_ACCOFF)
{
// TFTBACKLED_Ctrl(1);
SystemKey();
WorkModeChange();
KeyMain();
//DisplayMain(); // 取消该部分为 jzq
AudioMain();
PowerMain();
RadioMain();
ClockMain();
RDSMain();
TouchPanelMain();
//AuxMain();
#ifdef CDMODE_ENABLE
CDMain();
#endif
#ifdef DVDMODE_ENABLE
DVDMain();
#endif
DSAMain();
MotorMain();
//IPODMain();
GPSMain();
BTMain();
LibMain();
AmpMain();
}
}
}
/*********************************************
Function: MCUInit
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:43
*********************************************/
void MCUInit(void)
{
CLK_CKDIVR=0;
/**********此处设置成LSI时钟了****/
CLK_ECKR |=0x01;
CLK_CMSR=0xB4; //Must be set by hardware ??
//modify it by jzq
/*********************************************/
/*
CLK_ECKR_HSEEN = 1;
CLK_ICKR_HSIEN = 0;
CLK_SWCR_SWEN = 1;
CLK_SWR = 0xb4;
*/
DI;
// Interrupt
ITC_SPR1 = y01010101;
ITC_SPR2 = y01010101;
ITC_SPR3 = y01010101;
ITC_SPR4 = y01010101;
ITC_SPR5 = y01010101;
ITC_SPR6 = y01010101;
ITC_SPR7 = y01010101;
ITC_SPR8 = y11110101;
EXTI_CR1 = y01100101;
EXTI_CR2 = 0x01;
TIM2_PSCR = 0x04;
TIM2_IER = y00000110;
TIM2_CR1_CEN = 1;
TIM4_CR1=0x05;
TIM4_PSCR=0x07;
TIM4_ARR=250;
TIM4_IER_UIE=1;
#if 0 // DEBUG_SCI_ENABLE
// 19200 --- None --- 8 --- 1
//USART_DIV=26+1/16=26.0625
//Baud=8M/16/26.0625=19185
USART_BRR1=26;
USART_BRR2=1;
USART_CR2=y00001100;
#endif
UART_init();
LINUART_init();
EI;
#ifdef DEBUG_SCI_ENABLE
SCI_SendString("ST Car Audio Platform 4 --- Shenzhen CRM Lab");
#endif
//DSA_init();
}
/*********************************************
Function: SystemKey
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:41
*********************************************/
void SystemKey(void)
{
switch(SysCommand)
{
case SYSTEM_COMMAND_POWER:
//debug("power key press");
if (System.PowerMode==POWERMODE_POWERON
||System.PowerMode==POWERMODE_POWERONREQ
||System.PowerMode==POWERMODE_POWERONWAIT)
{
PowerOff();
if(RDS.F_TAEnable)
{
RDS.F_TAEnable=0;
if(F_InTASwitch)TaSwitchBack();
#ifdef EON_ENABLE
if(F_InEONTASwitch)EONTaSwitchBack();
#endif
}
}
else
{
PowerOn();
}
break;
case SYSTEM_COMMAND_MODE:
//debug("mode");
#if 1
if(F_InTASwitch)break;
#ifdef EON_ENABLE
if(F_InEONTASwitch)break;
#endif
#endif
switch (System.FWorkMode.Current)
{
// debug_val("modechang:",System.FWorkMode.Current);
case WORKMODE_STANDBY:
ChangeFWorkmode(WORKMODE_MENU);
debug("menu");
break;
case WORKMODE_MENU:
ChangeFWorkmode(WORKMODE_RADIO);
debug("radio");
break;
case WORKMODE_RADIO:
ChangeFWorkmode(WORKMODE_DVD);
debug("dvd");
break;
case WORKMODE_DVD:
ChangeFWorkmode(WORKMODE_USB);
debug("usb");
break;
case WORKMODE_USB:
ChangeFWorkmode(WORKMODE_SD);
debug("sd");
break;
case WORKMODE_SD:
ChangeFWorkmode(WORKMODE_GPS);
debug("gps");
break;
case WORKMODE_GPS:
ChangeFWorkmode(WORKMODE_IPOD);
debug("ipod");
break;
case WORKMODE_IPOD:
ChangeFWorkmode(WORKMODE_BT);
debug("bt");
break;
case WORKMODE_BT:
ChangeFWorkmode(WORKMODE_STANDBY);
debug("STANDBY");
break;
}
if(F_MuteKey)
{
F_MuteKey=0;
}
break;
}
}
/*********************************************
Function: SystemInit
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:40
*********************************************/
void SystemInit(void)
{
System.FWorkMode.Last= WORKMODE_IDLE;
System.FWorkMode.Current = WORKMODE_IDLE;
System.FWorkMode.Next = WORKMODE_IDLE;
System.FWorkMode.Requst= WORKMODE_STANDBY;
System.FWorkMode.Save=WORKMODE_RADIO;
//System.FWorkMode.Save = WORKMODE_MENU;
System.DispMode.Last= DISPMODE_IDLE;
System.DispMode.Current = DISPMODE_IDLE;
System.DispMode.Next = DISPMODE_IDLE;
System.DispMode.Requst= DISPMODE_STANDBY;
System.DispMode.Save=DISPMODE_RADIO;
//System.DispMode.Save = DISPMODE_MENU;
}
/*********************************************
Function: WorkModeChange
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:38
*********************************************/
void WorkModeChange(void)
{
switch(System.FWorkMode.Requst)
{
case WORKMODE_RADIO:
//System.DispMode.Requst=DISPMODE_RADIO;
//if(F_InTASwitch)
if(F_InTASwitch||F_InEONTASwitch)
{
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_TRAFFIC;
}
else if(RDS.F_PSExist)
{
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_PS;
}
else
{
System.DispMode.Requst=DISPMODE_RADIO;
RDSDispMode=RDSDISP_IDLE;
}
break;
case WORKMODE_DVD:
System.DispMode.Requst = DISPMODE_DVD;
break;
case WORKMODE_USB:
System.DispMode.Requst = DISPMODE_USB;
case WORKMODE_SD:
System.DispMode.Requst=DISPMODE_SD;
break;
case WORKMODE_GPS:
System.DispMode.Requst=DISPMODE_GPS;
break;
case WORKMODE_BT:
System.DispMode.Requst=DISPMODE_BT;
break;
case WORKMODE_IPOD:
System.DispMode.Requst=DISPMODE_IPOD;
break;
case WORKMODE_STANDBY:
System.DispMode.Requst=DISPMODE_STANDBY;
break;
case WORKMODE_MENU:
System.DispMode.Requst = DISPMODE_MENU;
break;
}
#if 1
if(System.FWorkMode.Last!= WORKMODE_IDLE)
{
System.FWorkMode.Save=System.FWorkMode.Last;
System.FWorkMode.Last= WORKMODE_IDLE;
}
if(System.FWorkMode.Next != WORKMODE_IDLE
&& System.FWorkMode.Current != System.FWorkMode.Next)
{
System.FWorkMode.Last= System.FWorkMode.Current;
System.FWorkMode.Current = System.FWorkMode.Next;
}
System.FWorkMode.Next = WORKMODE_IDLE;
if(System.FWorkMode.Requst != WORKMODE_IDLE
&& System.FWorkMode.Requst != System.FWorkMode.Next)
{
System.FWorkMode.Next = System.FWorkMode.Requst;
System.FWorkMode.Requst= WORKMODE_IDLE;
}
if(System.DispMode.Last!= DISPMODE_IDLE)
{
System.DispMode.Save=System.DispMode.Last;
System.DispMode.Last= DISPMODE_IDLE;
}
if(System.DispMode.Next != DISPMODE_IDLE
&& System.DispMode.Current != System.DispMode.Next)
{
System.DispMode.Last= System.DispMode.Current;
System.DispMode.Current = System.DispMode.Next;
}
System.DispMode.Next = DISPMODE_IDLE;
if(System.DispMode.Requst != DISPMODE_IDLE
&& System.DispMode.Requst != System.DispMode.Next)
{
System.DispMode.Next = System.DispMode.Requst;
System.DispMode.Requst= DISPMODE_IDLE;
}
#endif
// debug_val("WORKMODE:",System.FWorkMode.Current);
}
/*********************************************
Function: ChangeFWorkmode
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:40:37
*********************************************/
void ChangeFWorkmode(unsigned char FMode)
{
if(System.FWorkMode.Current==FMode)return;
AudioMute(SOFTON);
System.FWorkMode.Requst=FMode;
}
/*********************************************
Function: GetOptionFromDiode
Description:
Write/Modify: Perry.Liang
Time: 2005-2-3- 14:13:46
*********************************************/
void GetOptionFromDiode(void)
{
// Jumper
/*Pin_J2=0;
PD_J2=0;
PO_J2=1;
Pin_J3=0;
PD_J3=0;
PO_J3=1;
Pin_J4=0;
PD_J4=0;
PO_J4=1;
Pin_J5=0;
PD_J5=0;
PO_J5=1;
O_J2=Pin_J2;
O_J3=Pin_J3;
O_J4=Pin_J4;
O_J5=Pin_J5;*/
}
/*********************************************************
File End
*********************************************************/
#ifdef MASTER_CLOCK_SWITCH
/*********************************************************
Destriptor:switch the master clock from EXT to INT or INTERN to EXT
input : HSE 0 and HSI 1
output: none
Writer: JZQ date:2008 - 12 - 5
***********************************************************/
#define HSE2HSI 0
#define HSI2HSE 1
#define HSI_AS_MASTER_CLOCK 0xe1
#define LSI_AS_MASTER_CLOCK 0xd2
#define HSE_AS_MASTER_CLOCK 0xb4
void MasterClockSwitchAUTO(unsigned char master)
{
CLK_SWCR_SWEN = 1;
CLK_SWCR_SWIEN = 1;
CLK_SWR = master;
}
void MasterClockSwitchManual(unsigned char master)
{
CLK_SWR = master;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -