void setup() { Serial.begin(38400); pinMode(PIN_SW,INPUT); pinMode(PIN_LED3,OUTPUT); Init_OLED(MARY2); OLED_printf_Font(OLED_FONT_MEDIUM); OLED_printf_Position(0, 0); OLED_printf_Color(OLED_WHT, OLED_BLK); OLED_printf_Font(OLED_FONT_MEDIUM); OLED_printf_Position(0, 1); OLED_printf_Color(OLED_WHT, OLED_BLK); OLED_printf(MARY2,"TOKUSHU"); OLED_printf_Position(1, 3); OLED_printf_Color(OLED_YEL, OLED_BLK); OLED_printf(MARY2,"DENSHI"); OLED_printf_Position(1, 5); OLED_printf_Color(OLED_BLU, OLED_BLK); OLED_printf(MARY2,"KAIRO"); OLED_printf_Position(2, 7); OLED_printf_Color(OLED_CYN, OLED_BLK); OLED_printf(MARY2,"Inc."); delay(1000); }
volatile void Init_Devicelib(){ Init_OLED(); En_OLED(); Init_TA(); Init_TB(); ClearISRMessage(&ISRMSG); }
int main(void) { //系统时钟设置. //对于LM3S8962来说,外部晶体只能在1-8MHZ之间.但是ADC需要14-18Mhz才能正常工作,所以必须使用PLL //PLL频率400MHZ,预先被2分频输出,所以SYSDIV_4之后得到50MHZ. //该函数配置系统使用8M晶体,使能PLL,系统时钟50M.ADC的时钟直接由PLL/25(400/25=18Mhz)获得 SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_8MHZ); //SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_8MHZ); Init_OLED(); Init_ADC0(); Init_Timer_A(); while(1) { }; return 0; }
/******************************************************************************* **函 数: KeyInit **功 能: 初始化 **参 数: unitID --单元号 **返 回: void *******************************************************************************/ void KeyInit(u8 unitID) { u8 i; Battery_Init(); Init_OLED(); _74HC595_Init(); ShowLED_OpenAll(); if(1 == Battery_GetPercent(&gPowerPercent)) { if(gPowerPercent <= 8) //电量小于8%时自动提示用户充电,3s以后休眠 { OLED_ShowPicAt(36,2,56,32,PicPower); Thread_Login(ONCEDELAY, 0,3000,&Standby_Mode); for(;;); } } EEPROM_Read(ADDR_PASSWORD, 4, &gPassword[0]); if((gPassword[0]>6)||(gPassword[1]>6)||(gPassword[2]>6)||(gPassword[3]>6)) { gPassword[0] = 0; gPassword[1] = 0; gPassword[2] = 0; gPassword[3] = 0; } if((gPassword[0]==0)||(gPassword[1]==0)||(gPassword[2]==0)||(gPassword[3]==0)) { gPswFlag = 0; //无密码 } else gPswFlag = 1; //有密码 Thread_Login(FOREVER, 0, 5 , &Key_Handle); //5ms 按键 Thread_Login(FOREVER, 0, 100, &LowPower_CheckTime); //100ms*100 = 10s 睡眠 Thread_Login(FOREVER, 0, 200 ,&Battery_Show); Get_CurrentKeyState(&gKeyPrevState); if((gKeyPrevState.KeyValue > MAX_TOUCH_KEY)||(!gKeyPrevState.KeyValue)) { gKeyPrevState.KeyValue = first_key; } if((gKeyPrevState.KeyType > KEY_LONG)||(KEY_NONE == gKeyPrevState.KeyType)) { gKeyPrevState.KeyType = KEY_SHORT; } gKeyCh[gKeyPrevState.KeyValue].Status = gKeyPrevState.KeyType; for(i = 1;i < MAX_TOUCH_KEY;i++) { if(gKeyPrevState.KeyStatusVal[i] > 1) { gKeyPrevState.KeyStatusVal[i] = SW_OFF; } gKeyStatus[i].Status = gKeyPrevState.KeyStatusVal[i]; } switch(gKeyPrevState.KeyType) { case KEY_SHORT: { if(SW_ON == gKeyStatus[gKeyPrevState.KeyValue].Status) { OLED_ShowHalfPicAt(4,PicTab[gKeyPrevState.KeyValue]); } else { OLED_ShowHalfPicAt(4,PicTab[gKeyPrevState.KeyValue + 32]); } }break; case KEY_LONG: { OLED_ShowHalfPicAt(4,PicTab[gKeyPrevState.KeyValue + 16]); }break; default:break; } Battery_Show_State(); Upload(1); }