新增电机板级支持包:基于 AT8236-MS 驱动芯片,实现了对 4 个直流电机的 PWM 控制。 实现霍尔传感器功能:用于速度测量和脉冲计数。 更新 GPIO 初始化:为霍尔传感器添加了外部中断(EXTI)配置。 修改系统时钟配置:改用高速外部时钟(HSE)并调整了锁相环(PLL)设置。 更改定时器配置:将时基生成从 TIM8 改为 TIM4。 增强 FreeRTOS 任务:实现从霍尔传感器周期性读取并更新速度数据。 更新项目配置:以反映外设使用情况和优先级的变更。
36 lines
1.0 KiB
C
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 */
|