bsp_V8M_GPIO_photo.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #if 0
  2. #include "bsp_V8M_GPIO_photo.h"
  3. #include "soft_motor_output.h"
  4. #include "stm32f4xx.h"
  5. #define V8M_PHOTO_LOW_LEVEL 0
  6. #define V8M_PHOTO_HIGH_LEVEL 1
  7. #define V8M_PHOTO_PWM 2
  8. /**
  9. * @brief 拍照信号 GPIO 接口初始化
  10. *
  11. * @param signalType 信号类型 高低电平还是 PWM
  12. * @param pwmOffValue 低电平拍照不拍的 pwm 值
  13. */
  14. void V8M_Photo_GpioInit(uint8_t signalType, uint32_t pwmOffValue)
  15. {
  16. GPIO_InitTypeDef GPIO_InitStructure;
  17. //使能GPIOB 的时钟
  18. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
  19. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  20. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
  21. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  22. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  23. switch (signalType)
  24. {
  25. // 如果是低电平拍照
  26. case V8M_PHOTO_LOW_LEVEL:
  27. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  28. GPIO_Init(GPIOC, &GPIO_InitStructure);
  29. GPIO_SetBits(GPIOC, GPIO_Pin_4);
  30. break;
  31. // 如果是高电平拍照
  32. case V8M_PHOTO_HIGH_LEVEL:
  33. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  34. GPIO_Init(GPIOC, &GPIO_InitStructure);
  35. GPIO_ResetBits(GPIOC, GPIO_Pin_4);
  36. break;
  37. // 如果是 PWM 信号拍照
  38. case V8M_PHOTO_PWM:
  39. set_motor_pwm(MOTOR10, pwmOffValue);
  40. break;
  41. }
  42. }
  43. /**
  44. * @brief 使能拍照
  45. *
  46. */
  47. void V8M_Photo_Gpio_Set(uint8_t signalType, uint32_t pwmOnValue)
  48. {
  49. switch (signalType)
  50. {
  51. case V8M_PHOTO_LOW_LEVEL:
  52. GPIO_ResetBits(GPIOC, GPIO_Pin_4);
  53. break;
  54. case V8M_PHOTO_HIGH_LEVEL:
  55. GPIO_SetBits(GPIOC, GPIO_Pin_4);
  56. break;
  57. case V8M_PHOTO_PWM:
  58. set_motor_pwm(MOTOR10, pwmOnValue);
  59. break;
  60. default:
  61. break;
  62. }
  63. }
  64. /**
  65. * @brief 失能拍照
  66. *
  67. */
  68. void V8M_Photo_Gpio_Reset(uint8_t signalType, uint32_t pwmOffValue)
  69. {
  70. switch (signalType)
  71. {
  72. case V8M_PHOTO_LOW_LEVEL:
  73. GPIO_SetBits(GPIOC, GPIO_Pin_4);
  74. break;
  75. case V8M_PHOTO_HIGH_LEVEL:
  76. GPIO_ResetBits(GPIOC, GPIO_Pin_4);
  77. break;
  78. case V8M_PHOTO_PWM:
  79. set_motor_pwm(MOTOR10, pwmOffValue);
  80. break;
  81. default:
  82. break;
  83. }
  84. }
  85. #endif