| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #include "breaker.h"
- #include "gd32e230.h"
- #include "SysTick.h"
- #include "gd32e230_gpio.h"
- static breaker_channels_t b_chn;
- #define KEY_RCU RCU_GPIOB
- #define KEY_IO GPIOB
- #define KEY1 GPIO_PIN_14
- #define KEY2 GPIO_PIN_13
- #define KEY3 GPIO_PIN_12
- void breaker_init(void)
- {
- rcu_periph_clock_enable(RCU_GPIOA);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_0);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_1);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_2);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_3);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_4);
- gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_5);
-
- // breaker id IO
- rcu_periph_clock_enable(KEY_RCU);
- gpio_mode_set(KEY_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY1);
- gpio_mode_set(KEY_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY2);
- gpio_mode_set(KEY_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY3);
-
- }
- U8 breaker_read_id(void)
- {
- U8 ret = 0;
- if(gpio_input_bit_get(KEY_IO,KEY1))
- ret |= 1 << 2;
- if(gpio_input_bit_get(KEY_IO,KEY2))
- ret |= 1 << 1;
- if(gpio_input_bit_get(KEY_IO,KEY3))
- ret |= 1 << 0;
- ret = (~ret) &0x07;
- return ret;
- }
- S8 breaker_chn_read(U16* statue,U8 chanel)
- {
- S8 ret = 0xFF;
- if(statue){
- switch(chanel)
- {
- case BREAKER_CHANNAL_1:
- *statue = gpio_input_bit_get(GPIOA,GPIO_PIN_0);
- ret = 0;
- break;
- case BREAKER_CHANNAL_2:
- *statue = gpio_input_bit_get(GPIOA,GPIO_PIN_1);
- ret = 0;
- break;
- case BREAKER_CHANNAL_3:
- *statue = gpio_input_bit_get(GPIOA,GPIO_PIN_2);
- ret = 0;
- break;
- case BREAKER_CHANNAL_4:
- *statue = gpio_input_bit_get(GPIOA,GPIO_PIN_3);
- ret = 0;
- break;
- case BREAKER_CHANNAL_5:
- *statue = gpio_input_bit_get(GPIOA,GPIO_PIN_4);
- ret = 0;
- break;
- case BREAKER_CHANNAL_6:
- *statue = gpio_input_bit_get(GPIOA,GPIO_PIN_5);
- ret = 0;
- break;
- default:
- break;
- }
- }
- return ret;
- }
- U16 get_channel_val(U8 channel)
- {
- U16 ret = 0;
- switch(channel)
- {
- case BREAKER_CHANNAL_1:
- case BREAKER_CHANNAL_2:
- case BREAKER_CHANNAL_3:
- case BREAKER_CHANNAL_4:
- case BREAKER_CHANNAL_5:
- case BREAKER_CHANNAL_6:
- ret = b_chn.channel[channel];
- break;
- }
- return ret;
- }
- breaker_channels_t *get_breakers(void)
- {
- return &b_chn;
- }
|