tao_z
2021-06-24 bc6c916bff0b8d342c1cd62da73a2a09f18d22a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef MOTOR_H
#define MOTOR_H
#include "gd32e23x_exti.h"
/* µç»ú¿ØÐýתʵÏֽṹÌå */
 
#define SPEED_FILTER_NUM 30 // ËÙ¶ÈÂ˲¨´ÎÊý
 
typedef struct
{
    unsigned long timeout;     // ¶¨Ê±Æ÷¸üмÆÊý
    float speed;               // µç»úËÙ¶È rps£¨×ª/·ÖÖÓ£©
    unsigned long enable_flag; // µç»úʹÄܱêÖ¾
    signed int speed_group[SPEED_FILTER_NUM];
} motor_rotate_t;
 
/* ÀۼƠTIM_Period¸öºó²úÉúÒ»¸ö¸üлòÕßÖжϠ       
    µ±¶¨Ê±Æ÷´Ó0¼ÆÊýµ½65535£¬¼´Îª65535´Î£¬ÎªÒ»¸ö¼ÆÊýÖÜÆÚ */
#define HALL_PERIOD_COUNT (0xFFFF)
#define SPEED_PRESCALER_COUNT (6400u)
#define SPEED_PERIOD_COUNT (300u)
/* Í¨ÓÿØÖƶ¨Ê±Æ÷ʱÖÓÔ´TIMxCLK = HCLK = 64MHz
     É趨¶¨Ê±Æ÷ƵÂÊΪ = TIMxCLK / (SPEED_PRESCALER_COUNT) / SPEED_PERIOD_COUNT = 33.333Hz 
   ÖÜÆÚ T = 30ms */
#define HALL_PRESCALER_COUNT (110)
 
#define HALL_A_EXTI (EXTI_4)
#define HALL_B_EXTI (EXTI_5)
#define HALL_C_EXTI (EXTI_15)
 
#define MOTOR_OUT_CH_U (TIMER_CH_1)
#define MOTOR_OUT_CH_V (TIMER_CH_0)
#define MOTOR_OUT_CH_W (TIMER_CH_2)
 
extern void HAL_HallExti_TriggerCallback(void);
extern void BLDC_SpeedAndPID(void);
extern float get_motor_speed(void);
void hall_enable(void);
void hall_disable(void);
void set_pwm_pulse(uint16_t pulse);
#endif