You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
5.3 KiB

4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. #include "port.h"
  2. #include "zes8p5066lib/adc.h"
  3. #include "zes8p5066lib/gpio.h"
  4. #include "zes8p5066lib/pwm.h"
  5. #include "zes8p5066lib/systicket.h"
  6. #include "zes8p5066lib/uart0.h"
  7. zpwm_t g_ozonepwm;
  8. void port_init() {
  9. // LED-GPIO初始化
  10. zgpio_init_as_output(GPIO_Pin_A3 /* */, zgpio_get_default_output_config(), true);
  11. zgpio_init_as_output(GPIO_Pin_B13 /**/, zgpio_get_default_output_config(), true);
  12. zgpio_init_as_output(GPIO_Pin_A5 /* */, zgpio_get_default_output_config(), true);
  13. zgpio_init_as_output(GPIO_Pin_A6 /* */, zgpio_get_default_output_config(), true);
  14. // rgb
  15. zgpio_init_as_output(GPIO_Pin_A7 /* */, zgpio_get_default_ode_output_config(), true);
  16. zgpio_init_as_output(GPIO_Pin_A8 /* */, zgpio_get_default_ode_output_config(), true);
  17. zgpio_init_as_output(GPIO_Pin_A9 /* */, zgpio_get_default_ode_output_config(), true);
  18. //调试指示灯初始化
  19. zgpio_init_as_output(GPIO_Pin_A22 /**/, zgpio_get_default_output_config(), true);
  20. //风扇控制GPIO初始化
  21. zgpio_init_as_output(GPIO_Pin_B1 /* */, zgpio_get_default_output_config(), false);
  22. //按键GPIO初始化
  23. zgpio_init_as_input(GPIO_Pin_A11 /**/, zgpio_get_default_input_config());
  24. zgpio_init_as_input(GPIO_Pin_A16 /**/, zgpio_get_default_input_config());
  25. zgpio_init_as_input(GPIO_Pin_A13 /**/, zgpio_get_default_input_config());
  26. zgpio_init_as_input(GPIO_Pin_A12 /**/, zgpio_get_default_input_config());
  27. //串口初始化
  28. uart0_init(uart0_port_24and25, 115200, NULL);
  29. // ADC初始化
  30. adc_pin_init(GPIO_Pin_A2);
  31. adc_pin_init(GPIO_Pin_B8);
  32. adc_module_init();
  33. // PWM初始化
  34. {
  35. g_ozonepwm.T16Nx = T16N0;
  36. g_ozonepwm.T16Nx_PREMAT = 1;
  37. //臭氧PWM控制引脚
  38. g_ozonepwm.C1Enable = true; //
  39. g_ozonepwm.C1Pin = GPIO_Pin_A4; //
  40. g_ozonepwm.C1PinReuseFunc = GPIO_Reuse_Func2; //
  41. g_ozonepwm.C1PinIdleState = false; //
  42. g_ozonepwm.C1freq = 1; //
  43. g_ozonepwm.CH1_ODE = GPIO_ODE_Output_Disable; //
  44. g_ozonepwm.CH1_DS = GPIO_DS_Output_Normal; //
  45. g_ozonepwm.CH1_PUE = GPIO_PUE_Input_Disable; //
  46. g_ozonepwm.CH1_PDE = GPIO_PDE_Input_Disable; //
  47. zpwm_init(&g_ozonepwm);
  48. // zpwm_set_freq(&g_ozonepwm, 1, 30000);
  49. // zpwm_set_duty_ns(&g_ozonepwm, 1, 10000);
  50. // zpwm_start(&g_ozonepwm, 1);
  51. // while (true)
  52. // ;
  53. }
  54. }
  55. void port_ozone_pwm_set_duty(float freq, uint32_t dutyns) {
  56. zpwm_set_freq(&g_ozonepwm, 1, freq);
  57. zpwm_set_duty_ns(&g_ozonepwm, 1, dutyns);
  58. }
  59. void port_ozone_pwm_start() { zpwm_start(&g_ozonepwm, 1); }
  60. void port_ozone_pwm_stop() { zpwm_stop(&g_ozonepwm, 1); }
  61. /***********************************************************************************************************************
  62. * =======================================================GPIO======================================================== *
  63. ***********************************************************************************************************************/
  64. void port_debug_set(bool state) { GPIO_SET(A, 22, !, state); }
  65. bool port_fan_get() { return GPIO_GET(B, 1, !!); }
  66. void port_fan_set(bool state) {
  67. if (port_fan_get() == state) {
  68. return;
  69. }
  70. GPIO_SET(B, 1, !!, state);
  71. }
  72. void port_led0_set(bool state) { GPIO_SET(A, 3, !, state); }
  73. void port_led1_set(bool state) { GPIO_SET(B, 13, !, state); }
  74. void port_led2_set(bool state) { GPIO_SET(A, 5, !, state); }
  75. void port_led3_set(bool state) { GPIO_SET(A, 6, !, state); }
  76. void port_led_r_set(bool state) { GPIO_SET(A, 7, !, state); }
  77. void port_led_g_set(bool state) { GPIO_SET(A, 8, !, state); }
  78. void port_led_b_set(bool state) { GPIO_SET(A, 9, !, state); }
  79. bool port_led_r_get() { return GPIO_GET(A, 7, !); }
  80. bool port_led_g_get() { return GPIO_GET(A, 8, !); }
  81. bool port_led_b_get() { return GPIO_GET(A, 9, !); }
  82. bool port_gpio_get_timer_key_state(void) { return GPIO_GET(A, 11, !!); }
  83. bool port_gpio_get_level_key_state(void) { return GPIO_GET(A, 16, !!); }
  84. bool port_gpio_get_power_key_state(void) { return GPIO_GET(A, 12, !!); }
  85. bool port_gpio_get_interval_key_state(void) { return GPIO_GET(A, 13, !!); }
  86. bool port_led0_get_state(void) { return GPIO_GET(A, 3, !); }
  87. bool port_led1_get_state(void) { return GPIO_GET(B, 13, !); }
  88. bool port_led2_get_state(void) { return GPIO_GET(A, 5, !); }
  89. bool port_led3_get_state(void) { return GPIO_GET(A, 6, !); }
  90. /***********************************************************************************************************************
  91. * ========================================================ADC======================================================== *
  92. ***********************************************************************************************************************/
  93. float port_adc_get_fan_voltage() {
  94. float voltage = adc_get_voltage(GPIO_Pin_A2);
  95. return voltage; // u^2/R
  96. }
  97. float port_adc_get_ozone_generator_voltage() {
  98. float voltage = adc_get_voltage(GPIO_Pin_B8);
  99. return voltage; // u^2/R
  100. }
  101. float port_adc_get_fan_power() {
  102. float voltage = adc_get_voltage(GPIO_Pin_A2);
  103. /**
  104. * @brief /(1) X (12V)
  105. */
  106. return voltage / 1 * 12; // RU/R * fanU
  107. }
  108. float port_adc_get_ozone_generator_power() {
  109. float voltage = adc_get_voltage(GPIO_Pin_B8);
  110. return 12 * voltage / 0.5; // u^2/R
  111. }