12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #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 <stdio.h>
- 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
- }
|