mc_hall_gpio.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef _MC_HALL_H__
  2. #define _MC_HALL_H__
  3. #include "bsp/bsp.h"
  4. //51ms, 77.6
  5. //52.2ms
  6. //25.2
  7. #ifdef GD32_FOC_DEMO
  8. #define HALL_1_GROUP GPIOA
  9. #define HALL_1_PIN GPIO_PIN_6
  10. #define HALL_2_GROUP GPIOA
  11. #define HALL_2_PIN GPIO_PIN_7
  12. #define HALL_3_GROUP GPIOB
  13. #define HALL_3_PIN GPIO_PIN_0
  14. #else
  15. #define HALL_1_GROUP GPIOB
  16. #define HALL_1_PIN GPIO_PIN_8
  17. #define HALL_2_GROUP GPIOB
  18. #define HALL_2_PIN GPIO_PIN_7
  19. #define HALL_3_GROUP GPIOB
  20. #define HALL_3_PIN GPIO_PIN_6
  21. #endif
  22. #define DEGREES_120 0u
  23. #define DEGREES_60 1u
  24. #define HALL_PLACE DEGREES_120
  25. static int __inline__ hall_bit_get(uint32_t gpio_periph,uint32_t pin)
  26. {
  27. if((uint32_t)RESET != (GPIO_ISTAT(gpio_periph)&(pin))){
  28. return 1;
  29. }else{
  30. return 0;
  31. }
  32. }
  33. #define READ_HALL1() (hall_bit_get(HALL_1_GROUP, HALL_1_PIN))
  34. #define READ_HALL2() (hall_bit_get(HALL_2_GROUP, HALL_2_PIN))
  35. #define READ_HALL3() (hall_bit_get(HALL_3_GROUP, HALL_3_PIN))
  36. #define HALL1 READ_HALL1()
  37. #define HALL2 READ_HALL2()
  38. #define HALL3 READ_HALL3()
  39. typedef struct _hall_io {
  40. u8 hall[3];
  41. u32 hall_time;
  42. u8 is_edged;
  43. }hall_io_t;
  44. void mc_hall_init(void);
  45. int get_hall_stat(int samples);
  46. u32 hall_get_hwcount(u8 *hall);
  47. #endif /*_MC_HALL_H__ */