/********************************** * 文件名称: hall_sensor.c * 功能描述: 霍尔传感器模块 * 功能: 读取霍尔传感器信号,计算电机角度和速度 **********************************/ #include "main.h" #include "hall_sensor.h" #include "motor_define.h" #define SPEED_FILTER_DEPTH 8 Hall_TypeDef Hall = {0}; // 全局实例 Hall_TypeDef* Hall_Get(void) { return &Hall; } static float speed_history[SPEED_FILTER_DEPTH] = {0}; static uint8_t speed_idx = 0; float Get_Filtered_Speed(void) { speed_history[speed_idx++] =(Hall.speed[0]+Hall.speed[1]+Hall.speed[2]+Hall.speed[3]+Hall.speed[4]+Hall.speed[5])/6.0f; if(speed_idx >= SPEED_FILTER_DEPTH) speed_idx = 0; float sum = 0; for(int i=0; i= 2*PI) Hall.angle -= 2*PI; if(Hall.angle < 0) Hall.angle += 2*PI; }