Main
2017-03-16 15:00:31 0 举报
AI智能生成
新版思维导图是一款功能强大、界面简洁的思维导图制作工具。它提供了丰富的主题和样式,可以帮助用户快速创建出清晰、有条理的思维导图。新版思维导图还支持多种导出格式,方便用户与他人分享和交流。此外,它还具有云同步功能,可以让用户随时随地访问自己的思维导图。总之,新版思维导图是一款非常实用的工具,无论是用于个人学习还是团队协作,都能发挥出巨大的作用。
作者其他创作
大纲/内容
- Variables Initialize
backupRegisterValue
isAtDocking
isResetOnUndocking
undockedFlagValue
resetCause
properShutDownWord
isTimingInfoValid
isResetByWDTOccurred
2. __ASM("MOV R0, #0"); __ASM("MSR CONTROL, R0"")
Don't know why need this??
3. SetVectorTable
NVIC_SetVectorTable
4. Clock Initialize
OSC HFRCO
CMU_OscillatorEnable(cmuOsc_HFRCO, true, true)
CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFRCO);
CMU_HFRCOBandSet(cmuFHRCOBand_21MHz);
CMU_ClockEnable(cmuClock_HFPER, true);
CMU_ClockEnable(cmuClock_CORE, true);
CMU_ClockEnable(cmuClock_CORELE, true);
OSC LFXO
CMU_OscillatorEnable(cmuOsc_LFXO, true, true);
CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFXO);
CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFXO);
CMU_ClockEnable(cmuClock_LFA, true);
CMU_ClockEnable(cmuClock_LFB, true);
CMU_ClockEnable(cmuClock_GPIO, true);
5. GPIO & WDT & ButtonInit & LCDInit
GPIOInit();
CMU->HFPERCLKEN0 |= CMU_HFPERCLKEN0_GPIO;
CMU_ClockEnable(cmuClock_GPIO, true);
GPIOInit();
CenterLineInti();
GPIO_PinModeSet(BLE_RESET_PORT, BLE_RESET_PIN, gpioModeDisabled , 0u); // set BLE reset pin in HiZ
HardwareWDTReset();
Set WATCHDOG_KICK_PORT high & Low
ButtonInit();
buttonStructure Init
Configure Button GPIO
ConfigInterrupt
ClearIRQ and Enable
- ButtonIRQHandle
GPIOConfigInterrupt(CHARGING_PG_PORT, CHARGING_PG_PIN, TRUE, TRUE, TRUE);
LCDShutdown();
6. Dock Status Check & handling
DockStatusOnStartup
StatusCheckDockedMode( TRUE, &isAtDocking );
Dock Status Handling
If docking, set flags
isDocked = TRUE;
isChargingMode = TRUE;
isInstrumentInChargingMode = TRUE;
isAtPeeking = FALSE;
If not docking
isDocked = FALSE;
if BURAM)UNDOCK_POWERON_FLAG == UNDOCK_POWERON_PATTERN && BURAM_FACTORY_SLEEP_MODE == FACTORY_SLEEP_PATTERN,
BURAM_UNDOCK_POWERON_FLAG = 0
isResetOnUndocking = TRUE;
isAtPeeking = FALSE;
7. Alarm, SPI, Button, GUI, BackupPower Setting
AlarmOutInit();
SPIInit(SPI_PORT_1);
ButtonInit();
GuiLib_Init();
GuiLib_Clear();
BackUpPowerModeSetting();
8. Reset Cause check
RMU_ResetCauseGet()
?? Don't know where the cause was assigned
ret = RMU-> RSTCAUSE
ret & RMU_RSTCAUSE_EM4RST
ret &= ~(RMU_RSTCAUSE_BODREGRST|
RMU_RSTCAUSE_BODUNREGRST|
RMU_RSTCAUSE_LOCKUPRST|
RMU_RSTCAUSE_SYSREQRST);
RMU_RSTCAUSE_BODUNREGRST|
RMU_RSTCAUSE_LOCKUPRST|
RMU_RSTCAUSE_SYSREQRST);
divide one flag into different flags.
ret & RMU_RSTCAUSE_PORST
ret = RMU_RSTCAUSE_PORST;
This flag has the most priority, and will overwrite the other flags.
if ((ret & 0x83) == RMU_RSTCAUSE_BODUNREGRST)
ret = RMU_RSTCAUSE_BODUNREGRST; This flag has the second priority.
else if ((ret & 0x1f) == RMU_RSTCAUSE_BODREGRST)
ret = RMU_RSTCAUSE_BODREGRST;
Third priority flag
else if ((ret & 0x1b) & (RMU_RSTCAUSE_EXTRST | RMU_RSTCAUSE_WDOGRST))
ret &= RMU_RSTCAUSE_EXTRST | RMU_RSTCAUSE_WDOGRST;
else if ((ret & 0x7ff) & (RMU_RSTCAUSE_LOCKUPRST | RMU_RSTCAUSE_SYSREQRST))
ret &= RMU_RSTCAUSE_LOCKUPRST | RMU_RSTCAUSE_SYSREQRST;
#if defined( RMU_RSTCAUSE_BODAVDD0 )
else if (ret & RMU_RSTCAUSE_BODAVDD0)
ret = RMU_RSTCAUSE_BODAVDD0;
else if (ret & RMU_RSTCAUSE_BODAVDD1)
ret = RMU_RSTCAUSE_BODAVDD1;
else if (ret & (RMU_RSTCAUSE_EM4WURST|RMU_RSTCAUSE_EM4RST))
ret &= (RMU_RSTCAUSE_EM4WURST|
#if defined( RMU_RSTCAUSE_BUMODERST )
RMU_RSTCAUSE_BUMODERST|
#endif
RMU_RSTCAUSE_EM4RST);
#if defined( RMU_RSTCAUSE_BUMODERST )
RMU_RSTCAUSE_BUMODERST|
#endif
RMU_RSTCAUSE_EM4RST);
else if (ret & (RMU_RSTCAUSE_EM4RST|RMU_RSTCAUSE_EXTRST))
ret &= (RMU_RSTCAUSE_EM4RST|RMU_RSTCAUSE_EXTRST);
properShutDownWord = BURAM_GET_REGISTER(BURAM_SHUTDOWN_WORD_FLAG);
DatalogSessionCheckBackUpPowerExpiry(FALSE);
Different Reset status handling
RMU_RSTCAUSE_EXTRST
isResetByWDTOccurred = true;
isAtPeeking = FALSE;
BURTCInit();
TimeTrackerSetCounterUponReset();
isTimingInfoValid = TRUE;
(void)TimeTrackerIsTimingValid();
isErrorLogDueForWDTReset = TRUE;
((RMU_RSTCAUSE_BUMODERST & RMU->RSTCAUSE) && ((properShutDownWord != SHUTDOWN_VALUE ) && (isAbnormalPowerOff == FALSE)))
isResetAfterBackUpPowerMode = TRUE;
9. Sensor Bias check (including GFE &DAS)
10. hardware Power on
11. RTOS Management
K_OS_Init()
K_Task_Create(1u, &taskPeekingSlot, TaskPeeking, TASK_PEEKING_STACK_SIZE);
K_Task_Create(2u, &taskModbusSlot, TaskModbus, TASK_MODBUS_STACK_SIZE);
K_Task_Create(3u,&taskInitializationSlot, TaskInitialization, TASK_INIT_STACK_SIZE);
K_Task_Create(4u, &taskIdleSlot,TaskIdle, TASK_IDLE_STACK_SIZE);
K_Task_Create(3u, &taskSelfTestSlot, TaskSelfTest, TASK_SELTTEST_STACK_SIZE);
K_Task_Create(3u, &taskSensorSlot, TaskSensor, TASK_SENSOR_STACK_SIZE);
K_Task_Create(3u, &taskBatterySlot, TaskBattery, TASK_BATTERY_STACK_SIZE);
K_Task_Create(3u, &taskPumpSlot,TaskPump, TASK_PUMP_STACK_SIZE);
K_Task_Create(3u, &taskWirelessSlot,TaskWireless,TASK_WIRELESS_STACK_SIZE);
K_Task_Create(3u, &taskADCReadingsSlot, TaskADCReadings, TASK_ADC_STACK_SIZE);
K_Task_Create
12. Repower on check
13, OS Start
0 条评论
下一页
为你推荐
查看更多