/*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { can_parameter_struct can_init_parameter; can_filter_parameter_struct can_filter_parameter; receive_flag = RESET; /* configure Tamper key */ gd_eval_keyinit(KEY_TAMPER, KEY_MODE_GPIO); /* configure GPIO */ gpio_config(); /* configure USART */ gd_eval_COMinit(EVAL_COM2); /* configure NVIC */ nvic_config(); /* configure leds */ led_config(); /* set all leds off */ gd_eval_ledoff(LED1); gd_eval_ledoff(LED2); gd_eval_ledoff(LED3); gd_eval_ledoff(LED4); /* initialize CAN */ can_networking_init(can_init_parameter, can_filter_parameter); /* enable phy */ #ifdef CAN0_USED can_phy_enable(CANX); #endif /* enable CAN receive FIFO0 not empty interrupt */ can_interrupt_enable(CANX, CAN_INTEN_RFNEIE0); /* initialize transmit message */ transmit_message.can_tx_sfid = 0x321; transmit_message.can_tx_efid = 0x01; transmit_message.can_tx_ft = CAN_FT_DATA; transmit_message.can_tx_ff = CAN_FF_STANDARD; transmit_message.can_tx_dlen = 1; printf("please press the Tamper key to transmit data!\r\n"); while(1){ /* waiting for the Tamper key pressed */ while(0 == gd_eval_keygetstate(KEY_TAMPER)){ /* if transmit_number is 0x10, set it to 0x00 */ if(transmit_number == 0x10){ transmit_number = 0x00; }else{ transmit_message.can_tx_data[0] = transmit_number++; printf("transmit data: %x\r\n", transmit_message.can_tx_data[0]); /* transmit message */ can_transmit_message(CANX, &transmit_message); delay(); /* waiting for Tamper key up */ while(0 == gd_eval_keygetstate(KEY_TAMPER)); } } if(SET == receive_flag){ gd_eval_ledtoggle(LED1); receive_flag = RESET; printf("recive data: %x\r\n", receive_message.can_rx_data[0]); } } }
/*! \brief LEDs configure \param[in] none \param[out] none \retval none */ void led_config(void) { /* initialize the LEDs */ gd_eval_ledinit(LED1); gd_eval_ledinit(LED2); /* close all of LEDs */ gd_eval_ledoff(LED1); gd_eval_ledoff(LED2); }
/*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { /* GPIO clock enable */ rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_GPIOC); rcu_periph_clock_enable(RCU_GPIOF); /* delay time initialize */ systick_config(); /* configure the CEC peripheral */ cec_config(); /* configure the EXTI */ gd_eval_keyinit(KEY_TAMPER, KEY_MODE_EXTI); #ifdef GD32F130_150 gd_eval_keyinit(KEY_USER, KEY_MODE_EXTI); #elif defined(GD32F170_190) gd_eval_keyinit(KEY_WAKEUP, KEY_MODE_EXTI); #endif /* GD32F130_150 */ /* LED1 LED2 initialize */ gd_eval_ledinit(LED1); gd_eval_ledinit(LED2); gd_eval_ledoff(LED1); gd_eval_ledoff(LED2); /* main loop */ while(1) { /* wait receive data */ while(rcvstatus==0); if(rcvstatus == 1) { if((rcvdata[1]==0xA5)&&(rcvdata[2]==0x5A)) { gd_eval_ledon(LED1); delay_1ms(10); gd_eval_ledoff(LED1); } if((rcvdata[1]==0x5A)&&(rcvdata[2]==0xA5)) { gd_eval_ledon(LED2); delay_1ms(10); gd_eval_ledoff(LED2); } } /* a reception error occured */ rcvstatus = 0; } }
/************************************************************************************************* * function£ºcontrol led on off * * param (1) index Led's index * * (2) cmd Led on or off * * return : None * * discription: * **************************************************************************************************/ void LOS_EvbLedControl(int index, int cmd) { #ifdef GD32F150R8 switch (index) { case LOS_LED1: { if (cmd == LED_ON) { gd_eval_ledon(LED1); /*led1 on */ } else { gd_eval_ledoff(LED1); /*led1 off */ } break; } case LOS_LED2: { if (cmd == LED_ON) { gd_eval_ledon(LED2); /*led2 on */ } else { gd_eval_ledoff(LED2); /*led2 off */ } break; } case LOS_LED3: { if (cmd == LED_ON) { gd_eval_ledon(LED3); /*led3 on */ } else { gd_eval_ledoff(LED3); /*led3 off */ } break; } default: { break; } } #endif return; }
/*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { /* system clocks configuration */ irc40k_config(); systick_config(); gd_eval_ledinit(LED2); gd_eval_keyinit(KEY_TAMPER,KEY_MODE_EXTI); delay_1ms(50); /* enable write access to FWDGT_PSC and FWDGT_RLD registers. FWDGT counter clock: 40KHz(IRC40K) / 64 = 0.625 KHz */ fwdgt_config(625,FWDGT_PSC_DIV64); fwdgt_enable(); /* check if the system has resumed from FWDGT reset */ if (RESET != rcu_flag_get(RCU_FLAG_FWDGTRST)){ gd_eval_ledon(LED2); rcu_reset_flag_clear(); while(1); }else{ gd_eval_ledoff(LED2); } while (1); }
/*! \brief toggle the led \param[in] none \param[out] none \retval none */ void led_spark(void) { static __IO uint32_t timingdelaylocal = 0; if (timingdelaylocal != 0x00){ if(timingdelaylocal < 200){ gd_eval_ledon(LED1); gd_eval_ledon(LED2); gd_eval_ledon(LED3); gd_eval_ledon(LED4); }else{ gd_eval_ledoff(LED1); gd_eval_ledoff(LED2); gd_eval_ledoff(LED3); gd_eval_ledoff(LED4); } timingdelaylocal--; }else{ timingdelaylocal = 400; } }
/*! \brief toggle the led every 500ms \param[in] none \param[out] none \retval none */ void led_spark(void) { static __IO uint32_t timingdelaylocal = 0; if(timingdelaylocal){ if(timingdelaylocal < 500){ gd_eval_ledon(LED2); }else{ gd_eval_ledoff(LED2); } timingdelaylocal--; }else{ timingdelaylocal = 1000; } }
/*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { SysTick_Config(72000000/1000); /* configure leds */ led_config(); /* configure CMP0 and CMP1 */ cmp_config(); /* configure CMP0 and CMP1 */ check_state(); while(1) { /* input voltage is over the thresholds: higher and lower thresholds */ if(STATE_OVER_THRESHOLD == check_state()){ gd_eval_ledon(LED1); gd_eval_ledoff(LED2); gd_eval_ledon(LED3); gd_eval_ledoff(LED4); } /* input voltage is within the thresholds: higher and lower thresholds */ if(STATE_WITHIN_THRESHOLD == check_state()){ delay_ms(500); if(STATE_WITHIN_THRESHOLD == check_state()){ gd_eval_ledoff(LED1); gd_eval_ledoff(LED2); gd_eval_ledoff(LED3); gd_eval_ledoff(LED4); /* enter deepsleep mode */ deepsleep_mode_config(); } } /* input voltage is under the thresholds: higher and lower thresholds */ if(STATE_UNDER_THRESHOLD == check_state()){ gd_eval_ledoff(LED1); gd_eval_ledon(LED2); gd_eval_ledoff(LED3); gd_eval_ledon(LED4); } } }
/*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { int i=0; /* TSI peripheral and GPIOB periph clock enable */ rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_TSI); /* PB0 TSI_CHCFG_G2P1 SAMPCAP PB1 TSI_CHCFG_G2P2 CHANNEL PB2 TSI_CHCFG_G2P3 CHANNEL */ /* configure the GPIO ports */ gpio_config(); /* configure the TSI peripheral */ tsi_config(); /* configure the LED */ led_config(); /* reference cycle value acquisition and processing */ for(i=0;i<20;i++){ /* get charge transfer complete cycle number of group2 pin2 */ tsi_transfer_pin(TSI_CHCFG_G2P2); /* check the TSI flag:end of acquisition interrupt */ if(tsi_interrupt_flag_get(TSI_INTF_CTCF) == (uint8_t)SET){ /* get charge transfer complete cycle number */ sample_refnum_array2[i] = tsi_group2_cycle_get(); } /* disable the selected pin as channel pin:pin2 */ tsi_channel_pin_disable(TSI_CHCFG_G2P2); /* get charge transfer complete cycle number of group2 pin3 */ tsi_transfer_pin(TSI_CHCFG_G2P3); if(tsi_interrupt_flag_get(TSI_INTF_CTCF) == (uint8_t)SET){ sample_refnum_array3[i] = tsi_group2_cycle_get(); } tsi_channel_pin_disable(TSI_CHCFG_G2P3); /* delay for a period of time while all banks have been acquired */ delay(0xFFFF); } /* sum of sample_refnum_array */ for(i=1;i<20;i++){ sample_refnum[0] += sample_refnum_array2[i]; sample_refnum[1] += sample_refnum_array3[i]; } /* average channel cycle value are obtained */ sample_refnum[0] = sample_refnum[0]/19; sample_refnum[1] = sample_refnum[1]/19; while (1){ /* acquisition group2 pin2 */ tsi_transfer_pin(TSI_CHCFG_G2P2); /* check the TSI flag end of acquisition interrupt */ if(tsi_interrupt_flag_get(TSI_INTF_CTCF) == (uint8_t)SET){ /* get charge transfer complete cycle number */ samplenum[0] = tsi_group2_cycle_get(); } /* light LED1 */ if((sample_refnum[0]-samplenum[0]) > THRESHOLD1){ /* group2 pin2 is touched */ gd_eval_ledon(LED1); }else{ gd_eval_ledoff(LED1); } tsi_channel_pin_disable(TSI_CHCFG_G2P2); /* acquisition group2 pin3 */ tsi_transfer_pin(TSI_CHCFG_G2P3); if(tsi_interrupt_flag_get(TSI_INTF_CTCF) == (uint8_t)SET){ samplenum[1] = tsi_group2_cycle_get(); } /* light LED2 */ if((sample_refnum[1]-samplenum[1]) > THRESHOLD2){ /* group2 pin3 is touched */ gd_eval_ledon(LED2); }else{ gd_eval_ledoff(LED2); } tsi_channel_pin_disable(TSI_CHCFG_G2P3); /* delay for a period of time while all banks have been acquired */ delay(0xFFFF); } }
/*! \brief main function \param[in] none \param[out] none \retval none */ int main(void) { int i = 0; dma_parameter_struct dma_init_struct; /* enable DMA clock */ rcu_periph_clock_enable(RCU_DMA); /* initialize LED */ led_config(); /* all LED off */ gd_eval_ledoff(LED1); gd_eval_ledoff(LED3); gd_eval_ledoff(LED2); gd_eval_ledoff(LED4); /* initialize DMA channel1 */ dma_deinit(DMA_CH1); dma_init_struct.direction = DMA_PERIPHERA_TO_MEMORY; dma_init_struct.memory_addr = (uint32_t)destination_address1; dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE; dma_init_struct.memory_width = DMA_MEMORY_WIDTH_8BIT; dma_init_struct.number = DATANUM; dma_init_struct.periph_addr = (uint32_t)source_address; dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_ENABLE; dma_init_struct.periph_width = DMA_PERIPHERAL_WIDTH_8BIT; dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH; dma_init(DMA_CH1,dma_init_struct); /* configure DMA mode */ dma_circulation_disable(DMA_CH1); dma_memory_to_memory_enable(DMA_CH1); /* initialize DMA channel2 */ dma_deinit(DMA_CH2); dma_init_struct.memory_addr = (uint32_t)destination_address2; dma_init(DMA_CH2,dma_init_struct); /* configure DMA mode */ dma_circulation_disable(DMA_CH2); dma_memory_to_memory_enable(DMA_CH2); /* initialize DMA channel3 */ dma_deinit(DMA_CH3); dma_init_struct.memory_addr = (uint32_t)destination_address3; dma_init(DMA_CH3,dma_init_struct); /* configure DMA mode */ dma_circulation_disable(DMA_CH3); dma_memory_to_memory_enable(DMA_CH3); /* initialize DMA channel4 */ dma_deinit(DMA_CH4); dma_init_struct.memory_addr = (uint32_t)destination_address4; dma_init(DMA_CH4,dma_init_struct); /* configure DMA mode */ dma_circulation_disable(DMA_CH4); dma_memory_to_memory_enable(DMA_CH4); /* enable DMA channel1~channel4 */ dma_channel_enable(DMA_CH1); dma_channel_enable(DMA_CH2); dma_channel_enable(DMA_CH3); dma_channel_enable(DMA_CH4); /* wait for DMA transfer complete */ for(i = 0; i < 200; i++); /* compare the data of source_address with data of destination_address */ transferflag1 = memory_compare(source_address, destination_address1, DATANUM); transferflag2 = memory_compare(source_address, destination_address2, DATANUM); transferflag3 = memory_compare(source_address, destination_address3, DATANUM); transferflag4 = memory_compare(source_address, destination_address4, DATANUM); /* if DMA channel1 transfer success,light LED1 */ if(SUCCESS == transferflag1){ gd_eval_ledon(LED1); } /* if DMA channel2 transfer success,light LED2 */ if(SUCCESS == transferflag2){ gd_eval_ledon(LED2); } /* if DMA channel3 transfer success,light LED3 */ if(SUCCESS == transferflag3){ gd_eval_ledon(LED3); } /* if DMA channel4 transfer success,light LED4 */ if(SUCCESS == transferflag4){ gd_eval_ledon(LED4); } while (1); }