|
@@ -110,6 +110,8 @@ void rt_hw_exception_install(rt_err_t (*exception_handle)(void* context))
|
|
|
#define SCB_HFSR (*(volatile const unsigned *)0xE000ED2C) /* HardFault Status Register */
|
|
|
#define SCB_MMAR (*(volatile const unsigned *)0xE000ED34) /* MemManage Fault Address register */
|
|
|
#define SCB_BFAR (*(volatile const unsigned *)0xE000ED38) /* Bus Fault Address Register */
|
|
|
+#define SCB_AIRCR (*(volatile unsigned long *)0xE000ED0C) /* Reset control Address Register */
|
|
|
+#define SCB_RESET_VALUE 0x05FA0004 /* Reset value, write to SCB_AIRCR can reset cpu */
|
|
|
|
|
|
#define SCB_CFSR_MFSR (*(volatile const unsigned char*)0xE000ED28) /* Memory-management Fault Status Register */
|
|
|
#define SCB_CFSR_BFSR (*(volatile const unsigned char*)0xE000ED29) /* Bus Fault Status Register */
|
|
@@ -352,6 +354,14 @@ void rt_hw_cpu_shutdown(void)
|
|
|
RT_ASSERT(0);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * reset CPU
|
|
|
+ */
|
|
|
+RT_WEAK void rt_hw_cpu_reset(void)
|
|
|
+{
|
|
|
+ SCB_AIRCR = SCB_RESET_VALUE;
|
|
|
+}
|
|
|
+
|
|
|
#ifdef RT_USING_CPU_FFS
|
|
|
/**
|
|
|
* This function finds the first bit set (beginning with the least significant bit)
|