| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include "Main.h"
- #include "Relay.h"
- #include "Sn74hc573.h"
- uint16_t Relay_state = 0;
- static void ConfigRelayGPIO(void);
- static void ConfigRelayGPIO(void)
- {
- rcu_periph_clock_enable(Data_Output_RCU_B);
- #if SUPPORT_DOUBLE_FIRE
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |GPIO_PIN_12 |GPIO_PIN_13 |GPIO_PIN_14|GPIO_PIN_15);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |GPIO_PIN_12 |GPIO_PIN_13 |GPIO_PIN_14|GPIO_PIN_15);
- gpio_bit_reset(GPIOB, GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 |GPIO_PIN_12 |GPIO_PIN_13 |GPIO_PIN_14|GPIO_PIN_15);
- #else
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out1);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out1);
- gpio_bit_reset(GPIOB, DB_Out1);
-
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out2);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out2);
- gpio_bit_reset(GPIOB, DB_Out2);
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out3);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out3);
- gpio_bit_reset(GPIOB, DB_Out3);
-
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, DB_Out4);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, DB_Out4);
- gpio_bit_reset(GPIOB, DB_Out4);
- #endif
- }
- void InitRelay(void)
- {
- ConfigRelayGPIO();
- }
- void Relayx_Onoff_state(uint8_t RLx,uint8_t st)
- {
- uint16_t temp0 = 0x0001;
- uint16_t temp1 = 0x0000;
- temp0 = temp0 << RLx;
- temp1 = ~temp0;
- if(st == RELAY_ON)
- {
- Relay_state |= temp0;
- }
- else
- {
- Relay_state &= temp1;
- }
- }
- void set_relay_state(uint8_t channel,uint8_t status)
- {
- uint8_t data = (channel + 8);
- if(data >15)
- return;
- if(status)
- {
- gpio_bit_set(GPIOB,BIT(data));
- }else
- {
- gpio_bit_reset(GPIOB,BIT(data));
- }
- }
|