瀏覽代碼

fix:修复使用40M晶振时休眠定时异常问题

Dozingfiretruck 2 年之前
父節點
當前提交
fb1d4f18d4
共有 2 個文件被更改,包括 9 次插入11 次删除
  1. 1 3
      app/port/luat_pm_air101.c
  2. 8 8
      platform/drivers/pmu/wm_pmu.c

+ 1 - 3
app/port/luat_pm_air101.c

@@ -25,18 +25,16 @@ int luat_pm_request(int mode) {
 }
 
 //int luat_pm_release(int mode);
-
 int luat_pm_dtimer_start(int id, size_t timeout) {
+    tls_pmu_clk_select(1);
     if (id == 0 && timeout > 0) {
         // 单位秒
         tls_pmu_timer0_start((timeout + 999) / 1000);
-        tls_pmu_clk_select(1);
         return 0;
     }
     else if (id == 1 && timeout > 0) {
         // 单位毫妙
         tls_pmu_timer1_start(timeout);
-        tls_pmu_clk_select(1);
         return 0;
     }
     return -1;

+ 8 - 8
platform/drivers/pmu/wm_pmu.c

@@ -343,7 +343,7 @@ void tls_pmu_standby_start(void)
 void tls_pmu_sleep_start(void)
 {
 	u32 val;
-	//u32 use40M;
+	u32 use40M;
 
 	tls_irq_enable(PMU_IRQn);		//默认打开中断为了清楚IO唤醒的中断标记
 
@@ -355,13 +355,13 @@ void tls_pmu_sleep_start(void)
 		tls_reg_write32(HR_PMU_INTERRUPT_SRC,val);
 	}
 	
-	//val = tls_reg_read32(HR_PMU_PS_CR);
-	//if (val&BIT(4))
-	//{
-		//use40M	= tls_reg_read32(HR_PMU_WLAN_STTS);
-		//use40M |= BIT(8);
-		//tls_reg_write32(HR_PMU_WLAN_STTS, use40M);
-	//}
+	val = tls_reg_read32(HR_PMU_PS_CR);
+	if (val&BIT(4))
+	{
+		use40M	= tls_reg_read32(HR_PMU_WLAN_STTS);
+		use40M |= BIT(8);
+		tls_reg_write32(HR_PMU_WLAN_STTS, use40M);
+	}
 	TLS_DBGPRT_INFO("goto sleep here\n");
 	val |= BIT(1);
 	tls_reg_write32(HR_PMU_PS_CR, val);