ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
1445151 Топик полностью
Anvar (26.06.2024 12:51, просмотров: 42) ответил SciFi на А как же среднее арифметическое без цикла? Хочу всё знать.
Без коррекции перехода пока так. Ессно дает ошибку при переходе 
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
{
if (BISS_C.fIntSPIBISS == IntStart) { BISS_C.cError++; BISS_C.NameError = ErrorOverIntSPI; } else { BISS_C.fIntSPIBISS = IntStart; if (hspi == BISS_C.hBISS) { BISS_C.DataStatus = DataReceived; if (BISS_C.cMovAvg >= nMovAvg) { BISS_C.cMovAvg = 0; if (BISS_C.fIntProgrammInt == IntStart) { BISS_C.cError++; BISS_C.NameError = ErrorOverIntProgrammInt; BISS_C.fIntProgrammInt = IntComplete; } else { __HAL_GPIO_EXTI_GENERATE_SWIT(ProgrammInt1_Pin); } } if (CheckBISSData() == BISSDataOk) { CalcBISSCod(); CalcAngularRateData(); BISS_C.sumCodeMovAvg = BISS_C.sumCodeMovAvg - BISS_C.BuffCodeMovAvg[BISS_C.cMovAvg]; // вычесть старое BISS_C.BuffCodeMovAvg[BISS_C.cMovAvg] = BISS_C.Data32; BISS_C.sumCodeMovAvg = BISS_C.sumCodeMovAvg + BISS_C.BuffCodeMovAvg[BISS_C.cMovAvg]; // добавить новое BISS_C.sumAngMovAvg = BISS_C.sumAngMovAvg - BISS_C.BuffRateMovAvg[BISS_C.cMovAvg]; // вычесть старое BISS_C.BuffRateMovAvg[BISS_C.cMovAvg] = BISS_C.AngularRateData; BISS_C.sumAngMovAvg = BISS_C.sumAngMovAvg + BISS_C.BuffRateMovAvg[BISS_C.cMovAvg]; // добавить новое BISS_C.cMovAvg++; // времянка HAL_GPIO_WritePin(Led4_Port, Led4_Pin, GPIO_PIN_RESET); } } } BISS_C.fIntSPIBISS = IntComplete;
}
// Вызывается по __HAL_GPIO_EXTI_GENERATE_SWIT(ProgrammInt1_Pin) void CallBackBISSMovAvg() { BISS_C.fIntProgrammInt = IntStart; Callback_Vector(BISS_C.sumCodeMovAvg / nMovAvg, BISS_C.sumAngMovAvg / nMovAvg); BISS_C.fIntProgrammInt = IntComplete; }