pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT
Dependencies: mbed MMA8451Q USBDevice WakeUp vt100
Fork of afero_node_suntory_2017_06_15 by
util/MCUResetReason.cpp
- Committer:
- Rhyme
- Date:
- 2017-10-18
- Revision:
- 23:e4d2316383a1
- Parent:
- 10:02e481a80843
File content as of revision 23:e4d2316383a1:
#include "MCUResetReason.hpp" /** * System Reset Status Register 0 (RCM_SRS0) 0x4007_F000 * * bit[7] : POR Power-On Reset * bit[6] : PIN External Reset Pin * bit[5] : WDOG Watchdog * bit[4] : (Reserved) * bit[3] : LOL Loss-of-Lock Reset * bit[2] : LOC Loss-of-Clock Reset * bit[1] : LVD Low-Voltage Detect Reset * bit[0] : WAKEUP Low Leakage Wakeup Reset */ #define REG_RCM_SRS0 (uint8_t *)0x4007F000 #define POR_RESET_BIT 0x80 #define PIN_RESET_BIT 0x40 #define WDG_RESET_BIT 0x20 #define LOL_RESET_BIT 0x08 #define LOC_RESET_BIT 0x04 #define LVD_RESET_BIT 0x02 #define WUP_RESET_BIT 0x01 /** * System Reset Status Register 1 (RCM_SRS1) 0x4007_F001 * * bit[7:6] (Reserved) * bit[5] : SACKERR Stop Mode Acknowledge Error Reset * bit[4] : (Reserved) * bit[3] : MDM_AP MDM-AP System Reset Request * bit[2] : SW Software Reset * bit[1] : LOCKUP Core Lockup * bit[0] : (Reserved) */ #define REG_RCM_SRS1 (uint8_t *)0x4007F001 #define SACK_RESET_BIT 0x20 #define MDM_RESET_BIT 0x08 #define SW_RESET_BIT 0x04 #define LOCKUP_RESET_BIT 0x02 /** * Software Reset * * From Cortex-M0 Devices Generic User Guide * 4.3.4 Application Interrupt and Reset Control Register * * Bit[31:16] : VECTCKEY * Bit[15] : ENDIANESS * Bit[14:3] : (Reserved) * Bit[2] : SYSRESETREQ * Bit[1] : VECTCLRACTIVE (reserved for debug use) * Bit[0] : (Reserved) * * Note: To trigger software reset, both VECTKEY=0x05FA and SYSRESETREQ * must be written at once, therefore the value will be * 0x05FA0004 */ MCUResetReason *self = NULL; const char *MCUResetReason::str_reset_reason[] = { "Power On Reset", "External Pin Reset", "Watch Dog Reset : Forgot to feed?", "Loss of Lock Reset", "Loss of Clock Reset", "Low-Voltage Detect Reset", "Low Leakage Wakeup Reset", "Stop Mode Acknowledge Error Reset", "MDM-AP System Reset Request", "Software Reset", "Core Lockup Reset" }; MCUResetReason::MCUResetReason() { SRS[0] = *REG_RCM_SRS0 ; SRS[1] = *REG_RCM_SRS1 ; } MCUResetReason* MCUResetReason::ref() { return self != NULL ? self : self = new MCUResetReason(); } void MCUResetReason::clearFlag() { SRS[0] = PIN_RESET_BIT; SRS[1] = 0; } MCUResetReason::RESET_REASON MCUResetReason::getResetReason(void) { RESET_REASON reason; if (SRS[0] & POR_RESET_BIT) { reason = POWER_ON; } else if (SRS[0] & PIN_RESET_BIT) { reason = EXTERNAL_PIN; } else if (SRS[0] & WDG_RESET_BIT) { reason = WATCHDOG; } else if (SRS[0] & LOL_RESET_BIT) { reason = LOSS_OF_LOCK; } else if (SRS[0] & LOC_RESET_BIT) { reason = LOSS_OF_CLOCK; } else if (SRS[0] & LVD_RESET_BIT) { reason = LOW_VOLTAGE_DETECT; } else if (SRS[0] & WUP_RESET_BIT) { reason = LOW_LEAKAGE_WAKEUP; } else if (SRS[1] & SACK_RESET_BIT) { reason = STOP_MODE_ACK_ERROR; } else if (SRS[1] & MDM_RESET_BIT) { reason = MDM_AP_SYSTEM_RESET_REQUEST; } else if (SRS[1] & SW_RESET_BIT) { reason = SOFTWARE; } else if (SRS[1] & LOCKUP_RESET_BIT) { reason = CORE_LOCKUP; } return reason; } const char* MCUResetReason::getResetReasonStr() { return str_reset_reason[getResetReason()]; }