#include "at32f403a_407.h" #include "io.h" #include "FreeRTOS.h" #include "task.h" #include "input.h" #include "output.h" #include "settings_api.h" #include "io_utils.h" #include uint16_t output_state_bit; uint16_t output_mode_bit; uint16_t output_pwm[DO_NUMBER]; uint16_t output_pwm_save[DO_NUMBER]; uint16_t output_pwm_period[DO_NUMBER]; uint16_t output_pwm_period_save[DO_NUMBER]; // void io_port_enable(void) { crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_BPR_PERIPH_CLOCK, TRUE); pwc_battery_powered_domain_access(TRUE); } // void io_init(void) { #if 0 for (int i = 0; i < DI_NUMBER; i++) { in_init(&inputs[i]); } output_state_bit = settings.do_bits; output_mode_bit = settings.do_mode_bits; // Таймер для выходов в режиме PWM out_pwm_tim_init(); for (int i = 0; i < DO_NUMBER; i++) { output_pwm[i] = settings.do_pwm[i]; output_pwm_save[i] = settings.do_pwm_save[i]; output_pwm_period[i] = settings.do_pwm_period[i]; output_pwm_period_save[i] = settings.do_pwm_period_save[i]; if (save_mode_get()) { outputs[i].pwm_duty = settings.do_pwm_save[i]; outputs[i].pwm_period = settings.do_pwm_period_save[i]; } else { outputs[i].pwm_duty = settings.do_pwm[i]; outputs[i].pwm_period = settings.do_pwm_period[i]; } out_gpio_init(&outputs[i], i); } #endif }