|
|
#include "port.h"
#include "zes8p5066lib/adc.h"
#include "zes8p5066lib/gpio.h"
#include "zes8p5066lib/pwm.h"
#include "zes8p5066lib/systicket.h"
#include "zes8p5066lib/uart0.h"
zpwm_t g_ozonepwm;
void port_init() { // LED-GPIO初始化
zgpio_init_as_output(GPIO_Pin_A3 /* */, zgpio_get_default_output_config(), true); zgpio_init_as_output(GPIO_Pin_B13 /**/, zgpio_get_default_output_config(), true); zgpio_init_as_output(GPIO_Pin_A5 /* */, zgpio_get_default_output_config(), true); zgpio_init_as_output(GPIO_Pin_A6 /* */, zgpio_get_default_output_config(), true); // rgb
zgpio_init_as_output(GPIO_Pin_A7 /* */, zgpio_get_default_ode_output_config(), true); zgpio_init_as_output(GPIO_Pin_A8 /* */, zgpio_get_default_ode_output_config(), true); zgpio_init_as_output(GPIO_Pin_A9 /* */, zgpio_get_default_ode_output_config(), true); //调试指示灯初始化
zgpio_init_as_output(GPIO_Pin_A22 /**/, zgpio_get_default_output_config(), true); //风扇控制GPIO初始化
zgpio_init_as_output(GPIO_Pin_B1 /* */, zgpio_get_default_output_config(), false); //按键GPIO初始化
zgpio_init_as_input(GPIO_Pin_A11 /**/, zgpio_get_default_input_config()); zgpio_init_as_input(GPIO_Pin_A16 /**/, zgpio_get_default_input_config()); zgpio_init_as_input(GPIO_Pin_A13 /**/, zgpio_get_default_input_config()); zgpio_init_as_input(GPIO_Pin_A12 /**/, zgpio_get_default_input_config()); //串口初始化
uart0_init(uart0_port_24and25, 115200, NULL);
// ADC初始化
adc_pin_init(GPIO_Pin_A2); adc_pin_init(GPIO_Pin_B8); adc_module_init();
// PWM初始化
{ g_ozonepwm.T16Nx = T16N0; g_ozonepwm.T16Nx_PREMAT = 1;
//臭氧PWM控制引脚
g_ozonepwm.C1Enable = true; //
g_ozonepwm.C1Pin = GPIO_Pin_A4; //
g_ozonepwm.C1PinReuseFunc = GPIO_Reuse_Func2; //
g_ozonepwm.C1PinIdleState = false; //
g_ozonepwm.C1freq = 1; //
g_ozonepwm.CH1_ODE = GPIO_ODE_Output_Disable; //
g_ozonepwm.CH1_DS = GPIO_DS_Output_Normal; //
g_ozonepwm.CH1_PUE = GPIO_PUE_Input_Disable; //
g_ozonepwm.CH1_PDE = GPIO_PDE_Input_Disable; //
zpwm_init(&g_ozonepwm); // zpwm_set_freq(&g_ozonepwm, 1, 30000);
// zpwm_set_duty_ns(&g_ozonepwm, 1, 10000);
// zpwm_start(&g_ozonepwm, 1);
// while (true)
// ;
} }
void port_ozone_pwm_set_duty(float freq, uint32_t dutyns) { zpwm_set_freq(&g_ozonepwm, 1, freq); zpwm_set_duty_ns(&g_ozonepwm, 1, dutyns); }
void port_ozone_pwm_start() { zpwm_start(&g_ozonepwm, 1); } void port_ozone_pwm_stop() { zpwm_stop(&g_ozonepwm, 1); }
/***********************************************************************************************************************
* =======================================================GPIO======================================================== * ***********************************************************************************************************************/ void port_debug_set(bool state) { GPIO_SET(A, 22, !, state); } bool port_fan_get() { return GPIO_GET(B, 1, !!); } void port_fan_set(bool state) { if (port_fan_get() == state) { return; } GPIO_SET(B, 1, !!, state); } void port_led0_set(bool state) { GPIO_SET(A, 3, !, state); } void port_led1_set(bool state) { GPIO_SET(B, 13, !, state); } void port_led2_set(bool state) { GPIO_SET(A, 5, !, state); } void port_led3_set(bool state) { GPIO_SET(A, 6, !, state); } void port_led_r_set(bool state) { GPIO_SET(A, 7, !, state); } void port_led_g_set(bool state) { GPIO_SET(A, 8, !, state); } void port_led_b_set(bool state) { GPIO_SET(A, 9, !, state); }
bool port_led_r_get() { return GPIO_GET(A, 7, !); } bool port_led_g_get() { return GPIO_GET(A, 8, !); } bool port_led_b_get() { return GPIO_GET(A, 9, !); }
bool port_gpio_get_timer_key_state(void) { return GPIO_GET(A, 11, !!); } bool port_gpio_get_level_key_state(void) { return GPIO_GET(A, 16, !!); } bool port_gpio_get_power_key_state(void) { return GPIO_GET(A, 12, !!); } bool port_gpio_get_interval_key_state(void) { return GPIO_GET(A, 13, !!); }
bool port_led0_get_state(void) { return GPIO_GET(A, 3, !); } bool port_led1_get_state(void) { return GPIO_GET(B, 13, !); } bool port_led2_get_state(void) { return GPIO_GET(A, 5, !); } bool port_led3_get_state(void) { return GPIO_GET(A, 6, !); }
/***********************************************************************************************************************
* ========================================================ADC======================================================== * ***********************************************************************************************************************/
float port_adc_get_fan_voltage() { float voltage = adc_get_voltage(GPIO_Pin_A2); return voltage; // u^2/R
} float port_adc_get_ozone_generator_voltage() { float voltage = adc_get_voltage(GPIO_Pin_B8); return voltage; // u^2/R
}
float port_adc_get_fan_power() { float voltage = adc_get_voltage(GPIO_Pin_A2); /**
* @brief 采样电阻两端电压/采样电阻(1欧) X 风扇两端电压(12V) */
return voltage / 1 * 12; // RU/R * fanU
} float port_adc_get_ozone_generator_power() { float voltage = adc_get_voltage(GPIO_Pin_B8); return 12 * voltage / 0.5; // u^2/R
}
|