This repository has been archived on 2024-05-05. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
UAV/yaokon/Core/User_Drivers/RockingBar.c
2023-10-06 15:07:07 +08:00

52 lines
1.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "RockingBar.h"
#include "Filtering.h"
//static uint32_t RockingBar_ADC_Value[ROCKING_BAR_CH][FILLTERING_NUM];
float RockingBar_Value[ROCKING_BAR_CH];
SqQuecu RockingBar_ADC_Value_0;
SqQuecu RockingBar_ADC_Value_1;
SqQuecu RockingBar_ADC_Value_2;
SqQuecu *P[ROCKING_BAR_CH]={&RockingBar_ADC_Value_0,&RockingBar_ADC_Value_1};
/*函数RockingBar_ADC_GetValue
* 功能获取ADC转换的值存在数组中
*/
void RockingBarInit(void){
InitQuecu(&RockingBar_ADC_Value_0);
InitQuecu(&RockingBar_ADC_Value_1);
}
void RockingBar_ADC_GetValue(void){
uint32_t sum=0;
uint8_t num=0;
uint32_t adcv=0;
for(int i=0;i<ROCKING_BAR_CH;i++){
HAL_ADC_Start(&hadc1); //启动ADC转换
HAL_ADC_PollForConversion(&hadc1,10); //等待ADC转换完成
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC))
{
adcv = HAL_ADC_GetValue(&hadc1);
if(enQueue(P[i],adcv)==false)deQueue(P[i]);
enQueue(P[i],adcv);
}
}
HAL_ADC_Stop(&hadc1);
for(int i=0;i<ROCKING_BAR_CH;i++){
sum=0;
num=0;
for(int n=0;n<P[i]->size;n++){
num+=1;
sum += P[i]->data[n];
}
RockingBar_Value[i]=sum/num;
}
}
void RockingBar_GetValue(void){
RockingBar_ADC_GetValue();
RockingBar_Value[0] = THRUST_MIN + ((THRUST_MAX-THRUST_MIN)/(4096))*(RockingBar_Value[0]-0);
RockingBar_Value[1] = YAW_MIN + ((YAW_MAX-YAW_MIN)/(4096))*(RockingBar_Value[1]-0);
}