tao_z
2021-06-14 b150690b6ebe42a4ffd50278d761b8994121eb94
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
41
42
43
44
45
46
#ifndef BLDC_CONTROL_H
#define BLDC_CONTROL_H
#include "gpio.h"
//Òý½Å¶¨Òå
/*******************************************************/
// Á¬½ÓÇý¶¯°åµÄ SD ½Å
#define SHUTDOWN_PIN GPIO_PIN_15
#define SHUTDOWN_GPIO_PORT GPIOD
// #define SHUTDOWN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
/*******************************************************/
 
/* µç»ú SD or EN Ê¹ÄܽŠ*/
#define BLDCM_ENABLE_SD()     \
    do                        \
    {                         \
        Set_SDH2136_Enable(); \
    } while (0) // ¸ßµçƽ´ò¿ª-¸ßµçƽʹÄÜ
#define BLDCM_DISABLE_SD()     \
    do                         \
    {                          \
        Set_SDH2136_Disable(); \
    } while (0) // µÍµçƽ¹Ø¶Ï-µÍµçƽ½ûÓÃ
 
/* µç»ú·½Ïò¿ØÖÆÃ¶¾Ù */
typedef enum
{
    MOTOR_FWD = 0,
    MOTOR_REV,
} motor_dir_t;
 
typedef struct
{
    motor_dir_t direction; // µç»ú·½Ïò
    uint16_t dutyfactor;   // PWM Êä³öÕ¼¿Õ±È
    uint8_t is_enable;     // Ê¹Äܵç»ú
    uint32_t lock_timeout; // µç»ú¶Âת¼ÆÊ±
} bldcm_data_t;
 
void bldcm_init(void);
void set_bldcm_speed(uint16_t v);
void set_bldcm_direction(motor_dir_t dir);
motor_dir_t get_bldcm_direction(void);
void set_bldcm_enable(void);
void set_bldcm_disable(void);
void bldcm_pid_control(void);
#endif