示例#1
0
void clk_init(void)
{
// disable external oscillator so we can use pins PF0 , PF1 
RCC_HSEConfig(RCC_HSE_OFF);
// this should be enabled already 
RCC_HSI_Enable(ENABLE);
// wait for HSI to stabilize
// this is redundant
while( !RCC_GetBitState(RCC_FLAG_HSISTB) );
// this should be enabled already 
RCC_CK_SYSConfig(RCC_SYSCLKSOURCE_HSI);

RCC_PLLConfig(RCC_PLLSOURCE_HSI_DIV2 , 18);
RCC_PLL_Enable(ENABLE);

// wait for pll to stablilize
// this is redundant
while( !RCC_GetBitState(RCC_FLAG_PLLSTB) );
RCC_CK_SYSConfig(RCC_SYSCLKSOURCE_PLLCLK);

// wait for clock to change to pll
while ((RCC->GCFGR & (uint32_t)RCC_GCFGR_SCSS) != (uint32_t)RCC_GCFGR_SCSS_PLL);

RCC_AHBConfig(RCC_SYSCLK_DIV1); // config ahb clock divider
RCC_APB1Config(RCC_APB1AHB_DIV1);
RCC_APB2Config(RCC_APB2AHB_DIV1);
				
}
示例#2
0
文件: main.c 项目: eeinz/trochili
/**
  * @brief  Select the RTC clock source.
  * @param  None
  * @retval None
  */
void RTC_PreConfiguration(void)
{
    /* Enable PWR clock */
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_PWR, ENABLE);
    /* Enable the access of the RTC registers */
    PWR_BackupAccess_Enable(ENABLE);

    #if defined (RTC_CLOCK_SOURCE_LSI) 
        RCC_LSI_Enable(ENABLE);
        while(RCC_GetBitState(RCC_FLAG_LSISTB) == RESET)
        {
        }
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);

        prescaler_s = 0x18F;
        prescaler_a = 0x63;
    #elif defined (RTC_CLOCK_SOURCE_LSE)
        RCC_LSEConfig(RCC_LSE_EN);
        while(RCC_GetBitState(RCC_FLAG_LSESTB) == RESET)
        {
        }
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

        prescaler_s = 0xFF;
        prescaler_a = 0x7F;
    #else
    #error RTC Clock source should be defined.
    #endif /* RTC_CLOCK_SOURCE_LSI */

    RCC_RTCCLK_Enable(ENABLE);
    RTC_WaitRSF_ToSetAgain();
}
示例#3
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
    /* Initialize four LEDs mounted on GD32107C-EVAL board */
    LED_Init();

    /* Enable PWR and BKP clock */
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE);
    
    /* Enable write access to the registers in Backup domain */
    PWR_BackupAccess_Enable(ENABLE);
    
    /* Clear the bit flag of Tamper Event */
    BKP_ClearBitState();

    /* Check if the POR/PDR reset flag is set */
    if(RCC_GetBitState(RCC_FLAG_POPDRST) != RESET)
    {
        /* Clear the RCC all reset flags */
        RCC_ClearBitState();

        /* Turn on LED4 */
        GPIO_SetBits(GPIOE, GPIO_PIN_0);

        /* Check if Backup data registers has been written */
        if(CheckBackupReg(0x1226) == 0x00)
        {
            /* Backup data registers values are correct */
            /* Turn on LED2 */
            GPIO_SetBits(GPIOC, GPIO_PIN_0);
        }
        else
        { 
            /* Backup data registers values are not correct or they are not 
               written*/
            /* Write data to Backup data registers */
            WriteToBackupReg(0x1226);

            /* Turn on LED3 */
            GPIO_SetBits(GPIOC, GPIO_PIN_2);
        }
    }

    /* Turn on LED5 */
    GPIO_SetBits(GPIOE, GPIO_PIN_1);
       
    while (1)
    {
    }
}
示例#4
0
文件: main.c 项目: eeinz/trochili
/**
  * @brief  Configure system clocks.
  * @param  None
  * @retval None
  */
void RCC_Configuration(void)
{
    /* GPIOA, GPIOB, GPIOC and GPIOF clocks enable */
    RCC_AHBPeriphClock_Enable( RCC_AHBPERIPH_GPIOA |
                               RCC_AHBPERIPH_GPIOB |
                               RCC_AHBPERIPH_GPIOC |
                               RCC_AHBPERIPH_GPIOF  , ENABLE);

    /* PWR clocks enable */
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_PWR, ENABLE);

    /* Enable LSI clocks and select LSI as the clock for LCD */
    PWR_BackupAccess_Enable(ENABLE);
    RCC_LSI_Enable(ENABLE);
    while(RCC_GetBitState(RCC_FLAG_LSISTB) == RESET)
    {
    }
    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
}
示例#5
0
文件: main.c 项目: eeinz/trochili
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{  
    /* Configure the USART peripheral ----------------------------------------*/
    USART_InitStructure.USART_BRR = 115200;
    USART_InitStructure.USART_WL = USART_WL_8B;
    USART_InitStructure.USART_STBits = USART_STBITS_1;
    USART_InitStructure.USART_Parity = USART_PARITY_RESET;
    USART_InitStructure.USART_HardwareFlowControl = USART_HARDWAREFLOWCONTROL_NONE ;
    USART_InitStructure.USART_RxorTx = USART_RXORTX_RX | USART_RXORTX_TX; 
    GD_EVAL_COMInit(&USART_InitStructure);

    printf("\n\r  *********************** RTC Calendar Demo ***********************\n\r");

    /* Check if RTC has aready been configured */
    if (RTC->BKP0R != BKP_VALUE)
    {
        RTC_PreConfiguration();

        RTC_Setup(); 

    }
    else
    {
        /* Detect the reset source */
        if (RCC_GetBitState(RCC_FLAG_POPDRST) != RESET)
        {
            printf("\r\n Power On Reset Occurred....\n\r");
        }
        else if (RCC_GetBitState(RCC_FLAG_EPRST) != RESET)
        {
            printf("\r\n External Reset Occurred....\n\r");
        }

        printf("\n\r No Need To Configure RTC....\n\r");

        #ifdef RTC_CLOCK_SOURCE_LSI
            RCC_LSI_Enable(ENABLE);
        #endif 

        RTC_WaitRSF_ToSetAgain();
        RTC_ClearBitState(RTC_STR_AF);
        EXTI_ClearIntBitState(EXTI_LINE17);

        RTC_ShowTime();
        RTC_ShowAlarm();
    }
    
    RCC_ClearBitState();

    /* LED1 GPIO Initialization */
    RCC_AHBPeriphClock_Enable(LED1_GPIO_CLK, ENABLE);
    GPIO_InitStructure.GPIO_Pin = LED1_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
    
    LED1_GPIO_PORT->BOR = LED1_PIN;

    /* LED2 GPIO Initialization */
    RCC_AHBPeriphClock_Enable(LED2_GPIO_CLK, ENABLE);
    GPIO_InitStructure.GPIO_Pin = LED2_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
    
    LED2_GPIO_PORT->BOR = LED2_PIN;

    /* RTC ALARM Interrupt Configuration */
    EXTI_ClearIntBitState(EXTI_LINE17);
    EXTI_InitStructure.EXTI_LINE = EXTI_LINE17;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LINEEnable = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

    NVIC_InitStructure.NVIC_IRQ = RTC_IRQn;
    NVIC_InitStructure.NVIC_IRQPreemptPriority = 0;
    NVIC_InitStructure.NVIC_IRQSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQEnable = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    while (1)
    {
    }
}