2015-06-12 17 views
0

我使用Xbee和STM32F4微控制器作爲協調器和終端設備。我期待在每次調用定時器中斷時向我的終端設備發送3個不同的RF數據包。我目前的問題是,如果我將所有3個數據包一起發送到同一終端設備,那麼我的終端設備將丟棄2個數據包並僅接收一個數據包。所以我想在不同的時間間隔內發送所有三個數據包。我發現我不能在定時器中斷回調函數中使用延遲函數。因此,任何人都可以告訴我如何設置2次發送之間的延遲,或者有任何其他方式來解決這個問題。如何在定時器中斷回調函數中使用延遲功能?

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 
{ 
    uint8_t temp[10] = {0}; 

    // send query to Thermal Sensor 
    temp[0] = EN_TYPE_QUERY_TO_PD; 
    Send_To_Target(PD_SENSOR_ADDR_SL,temp,1); 

    ***/*I want to Set Delay Here*/*** 

    //Send Data to Thermal Sensor 
    temp[0] = EN_TYPE_DATA_TO_PD; 
    Send_To_Target(PD_SENSOR_ADDR_SL,temp,1); 

    ***/*I want to Set Delay Here*/*** 

    //Send command to Thermal Sensor 
    temp[0] = EN_TYPE_COMMAND_TO_PD; 
    Send_To_Target(PD_SENSOR_ADDR_SL,temp,1); 
} 

回答

0

只要ISR設置一個標誌,ISR退出後外部函數就會讀取。或者更好的做法是,將要發送的數據放入隊列中,使外部函數將空出來,並在其中插入任何需要的延遲。