Files
car_stm32f103vet6/Core/Bsp/bsp_hall.h
wangbeihong 1cc8327f13 特性:实现电机控制与霍尔传感器功能
新增电机板级支持包:基于 AT8236-MS 驱动芯片,实现了对 4 个直流电机的 PWM 控制。
实现霍尔传感器功能:用于速度测量和脉冲计数。
更新 GPIO 初始化:为霍尔传感器添加了外部中断(EXTI)配置。
修改系统时钟配置:改用高速外部时钟(HSE)并调整了锁相环(PLL)设置。
更改定时器配置:将时基生成从 TIM8 改为 TIM4。
增强 FreeRTOS 任务:实现从霍尔传感器周期性读取并更新速度数据。
更新项目配置:以反映外设使用情况和优先级的变更。
2026-04-03 20:24:55 +08:00

36 lines
1.0 KiB
C

#ifndef __BSP_HALL_H
#define __BSP_HALL_H
#include "main.h"
#include "bsp_motor.h" // 确保 motor_id_t 类型可见
#include "elog.h"
#include "cmsis_os.h"
/**
* @brief 霍尔周期/脉冲计数结构体
*/
typedef struct {
uint32_t pulse_count; // 总脉冲计数值
float speed_rpm; // 计算得到的转速 (RPM)
} hall_sensor_t;
/* 初始化霍尔传感器 (GPIO 外部中断模式) */
void hall_init(void);
/* 外部中断处理接口 (供 HAL 层调用,请勿在应用层直接调用) */
void hall_pulse_callback(uint16_t GPIO_Pin);
// /* 获取指定霍尔传感器的计数值 */
// uint32_t hall_get_count(motor_id_t motor_id);
/* 每隔固定时间调用此函数计算并更新转速 (例如在 100ms 任务中调用) */
float hall_update_speed(motor_id_t motor_id, uint32_t interval_ms);
// /* 清位计数值 */
// void hall_reset_count(motor_id_t motor_id);
// /* 计算转速的原始接口 (内部使用) */
// float hall_calculate_speed(motor_id_t motor_id, uint32_t interval_ms);
#endif /* __BSP_HALL_H */