CC2530遇到的低功耗問題

程序又出現BUG,終端採集到的溫度值始終是第一次。調試發現是低功耗模式那裏有問題。進入函數屏蔽掉低功耗函數問題依舊。這是爲何呢? 又去看了相關文檔關於低功耗部分的文檔。最後看看程序,發現BUG竟然又是寄存器設置的問題,老闆程序有一部分讓我迷惑,屏蔽掉了果真就行了。
//設置爲輸入上拉,防止浮空引腳,減小電流消耗及不肯定狀態
    P0SEL = 0x00; P0DIR = 0x00; P0INP &= ~0xFF;
    P1SEL = 0x00; P1DIR = 0x00; P1INP &= ~0xFF;


上面看了文檔後知道是什麼意思了。可是下面緊接着一段代碼相似上面部分代碼,就是此段出了問題。函數

P2SEL &= ~0x07; 
    P2DIR &= ~0x1F; 
    P2INP &= ~0x1F; 
    P2INP |= 0xE0;


屏蔽掉上段代碼,問題解決。可是我仍是不知道爲何這段代碼會形成溫度採集的值始終不變。委屈ui

 

下面是完整後進入低功耗模式的設置代碼。調試

void halMcuSetLowPowerMode(uint8 mode)
{
    //設置爲輸入上拉,防止浮空引腳,減小電流消耗及不肯定狀態
    P0SEL = 0x00; P0DIR = 0x00; P0INP &= ~0xFF;
    P1SEL = 0x00; P1DIR = 0x00; P1INP &= ~0xFF;
  
    // [放大模塊低功耗處理]
   // P1SEL &= ~0x02; P1DIR |= 0x02; P1_1 = 0;   
   // P1SEL &= ~0x10; P1DIR |= 0x10; P1_4 = 0;
     
    //貌似這裏有問題,這段代碼作啥子?
//    P2SEL &= ~0x07; 
//    P2DIR &= ~0x1F; 
//    P2INP &= ~0x1F; 
//    P2INP |= 0xE0;
    
    Init_SLEEP_TIMER();
    Set_ST_Period(RF_CYCLE*100);
    PowerMode(mode);
    
  // comment: not yet implemented
//  HAL_ASSERT(FALSE);
}


_______________________________________________________上面是昨日code

今天跟老闆說了BUG的緣由,看了代碼後就知道是哪裏的問題了。也怪本身看數據手冊沒有理解透徹。P0INP與P1INP中控制上啦下啦是要看P2INP的。P2INP的高三位纔是起決定做用的。
 文檔

相關文章
相關標籤/搜索