標(biāo)題: STM32 systick定時(shí)數(shù)組循環(huán)賦值,不會(huì)循環(huán)賦值? [打印本頁]

作者: laym    時(shí)間: 2021-5-28 14:44
標(biāo)題: STM32 systick定時(shí)數(shù)組循環(huán)賦值,不會(huì)循環(huán)賦值?
systick定時(shí)20ms得一個(gè)值放入數(shù)組中,連續(xù)取50個(gè)數(shù)(1s)得到一個(gè)數(shù)組,然后去掉第一個(gè)和左后一個(gè)值計(jì)算剩下值得平均值。第一個(gè)1秒得到一個(gè)數(shù)組,后面定時(shí)時(shí)間內(nèi)得不到值。我想每隔1秒都能得到一個(gè)數(shù)組,求各位教教我,謝謝!

static int16_t BatAdcCount=50;//1秒的定時(shí)次數(shù)
static uint32_t Bat_VotageAD[10];
void BatVoltageAD(int arg)//20ms執(zhí)行一次,
{
      if(BatAdcCount!=0)  //計(jì)數(shù)50次,就是1秒,得到一個(gè)數(shù)組Bat_VotageAD[50]
     {
          Bat_VotageAD[BatAdcCount-1] = AdcValueGet(BAT_DETECT_CHANNEL);
          BatAdcCount--;
      }
}

作者: glinfei    時(shí)間: 2021-5-28 15:06
你的中斷函數(shù)怎么寫的,沒看到;你在哪里恢復(fù)BatAdcCount=50了呢?沒有恢復(fù)就沒法得到新的數(shù)組啊;還有如果僅僅就是要個(gè)平均值,不用數(shù)組直接累加就行了;
作者: laym    時(shí)間: 2021-5-28 15:13
glinfei 發(fā)表于 2021-5-28 15:06
你的中斷函數(shù)怎么寫的,沒看到;你在哪里恢復(fù)BatAdcCount=50了呢?沒有恢復(fù)就沒法得到新的數(shù)組啊;還有如果 ...

我是這樣做的:在        TimerOnMsRepeatDelay(BatADCTimer,10,BatVoltageAD,0);這里是BatADCTimer=10ms回調(diào)函數(shù)BatVoltageAD, 然后再另一個(gè)    TimerOnMsRepeatDelay(PowerBatteryTimer, 100, PowerManagerOpt, 500);//每100ms 里的PowerManagerOpt回調(diào)函數(shù)內(nèi)部求平均值,并恢復(fù)BatAdcCount=50


作者: xuyaqi    時(shí)間: 2021-5-28 15:19
中斷里只負(fù)責(zé)放數(shù),處理工作放在主循環(huán)里,50個(gè)放夠處理一次。
作者: laym    時(shí)間: 2021-5-28 15:27
xuyaqi 發(fā)表于 2021-5-28 15:19
中斷里只負(fù)責(zé)放數(shù),處理工作放在主循環(huán)里,50個(gè)放夠處理一次。

SysTick_Handler是1ms中斷一次,你是說把下面的

    if(BatAdcCount!=0)  //計(jì)數(shù)50次,就是1秒,得到一個(gè)數(shù)組Bat_VotageAD[50]
      {
           Bat_VotageAD[BatAdcCount-1] = AdcValueGet(BAT_DETECT_CHANNEL);
           BatAdcCount--;
       }
放入中斷函數(shù)里面嗎? 但它是20ms得一個(gè)數(shù)組元素,而中斷時(shí)間是1ms

作者: laym    時(shí)間: 2021-5-28 15:34
而且如果不用數(shù)組,怎么直接疊加求平均值呢?
作者: glinfei    時(shí)間: 2021-5-28 15:48
laym 發(fā)表于 2021-5-28 15:34
而且如果不用數(shù)組,怎么直接疊加求平均值呢?

你就讀一個(gè),累加一下;讀完了再求平均。 要不你把主程序,中斷和調(diào)用的程序都貼一下,否則沒有流程圖知識(shí)敘述兩句很難懂的。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1