Forráskód Böngészése

update:重新开启临界保护功能

alienwalker 3 éve
szülő
commit
3b9de2812e
1 módosított fájl, 28 hozzáadás és 7 törlés
  1. 28 7
      application/src/luat_base_air105.c

+ 28 - 7
application/src/luat_base_air105.c

@@ -322,15 +322,36 @@ time_t luat_time(time_t *_Time) {
   return RTC_GetUTC();
 }
 
-//static uint32_t cri = 0;
+
+static uint32_t cri;
+static uint8_t cri_flag;
+static uint8_t disable_all;	//如果设置成1,将关闭总中断,非常危险,谨慎使用
+
+void luat_os_set_cri_all(uint8_t onoff)
+{
+	disable_all = onoff;
+}
+
+//进入临界保护,不可重入
 void luat_os_entry_cri(void) {
-//  if (cri == 0)
-//    cri = OS_EnterCritical();
+	if (disable_all) {
+		__disable_irq();
+		return;
+	}
+	if (!cri_flag) {
+		cri = OS_EnterCritical();
+		cri_flag = 1;
+	}
 }
 
+//退出临界保护,不可重入
 void luat_os_exit_cri(void) {
-//  if (cri != 0) {
-//    OS_ExitCritical(cri);
-//    cri = 0;
-//  }
+	if (disable_all) {
+		__enable_irq();
+		return;
+	}
+	if (cri_flag) {
+		cri_flag = 0;
+		OS_ExitCritical(cri);
+	}
 }