Example #1
0
/*!
    \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]);
        }
    } 
}
Example #2
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);
}
Example #3
0
/*!
    \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;
    }
}
Example #4
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;
}
Example #5
0
/*!
    \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);
}
Example #6
0
/*!
    \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;
    }
}
Example #7
0
/*!
    \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;
    }
}
Example #8
0
/*!
    \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);
        }
    }
}
Example #9
0
/*!
    \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);
    }
}
Example #10
0
/*!
    \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);
}