| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include "gd32e230.h"
- #include "SysTick.h"
- #include "breaker.h"
- #include "mb.h"
- #include "led.h"
- #include "timer.h"
- #define MODBUS_ADDR 0x40
- #define MODBUS_BON 115200
- #define MAX_CHN 6
- void fwdgt_Init(void)
- {
- uint16_t timeout = 0xFFFFU;
- rcu_osci_on(RCU_IRC40K);
- while(SUCCESS != rcu_osci_stab_wait(RCU_IRC40K))
- {
- if(timeout > 0)
- timeout--;
- else
- break;
- }
-
- fwdgt_config(2000,FWDGT_PSC_DIV64);
- fwdgt_write_disable();
- fwdgt_enable();
- }
- void feed_dog(void)
- {
- fwdgt_write_enable();
- fwdgt_counter_reload();
- }
- int main(void)
- {
- SystemInit();
- InitSysTick();
- breaker_init();
- fwdgt_Init();
- led_init();
- timer_14_init(9999, 71);
- U8 id= breaker_read_id();
- U8 addr = MODBUS_ADDR + (id);
- eMBInit(MB_RTU,addr,0,MODBUS_BON,MB_PAR_NONE);
- eMBEnable();
- breaker_channels_t *channels = get_breakers();
- U8 k = 0;
- channels->channel[k] = addr << 8 | MAX_CHN;
- while(1)
- {
- if(eMBCheck())
- {
- eMBEnable();
- }
-
- eMBPoll();
- for(k = BREAKER_CHANNAL_1; k < BREAKER_CHANNAL_ERR;k++)
- {
- breaker_chn_read(&channels->channel[k],k);
- }
- led_flash(id);
- feed_dog();
- //DelayNms(20);
- }
- }
|