Exemple #1
0
/**
  * @brief  Restore peripheral config before entering STOP mode.
  * @param  None
  * @retval None
  */
static void RestoreConfiguration(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  
  /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/    
  /* Enable HSE */    
  RCC_HSEConfig(RCC_HSE_ON);
 
  /* Wait till HSE is ready and if Time out is reached exit */
  HSEStatus = RCC_WaitForHSEStartUp();

  if (HSEStatus == (uint32_t)0x01)
  {
    /* Enable Prefetch Buffer */
    FLASH_SetLatency(FLASH_Latency_1);
    
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1); 
    
    /* PCLK = HCLK */
    RCC_PCLKConfig(RCC_HCLK_Div1);
        
    /*  PLL configuration:  = HSE *  6 = 48 MHz */
    RCC_PREDIV1Config(RCC_PREDIV1_Div1);
    RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_CFGR_PLLMULL6);
    
    /* Enable PLL */
    RCC_PLLCmd(ENABLE);
    
    /* PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  } 
}
Exemple #2
0
void Clock_Setup(void){
    FLASH_SetLatency(FLASH_Latency_1);

    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9);
    RCC_PLLCmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLKConfig(RCC_HCLK_Div1);

    //GPIO clock
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC, ENABLE);

    //SPI clock
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

    //I2C clock
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);

    //USART clock
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
}
Exemple #3
0
void RCC_Config(void)
{
  
  RCC_DeInit(); 
  RCC_HSEConfig(RCC_HSE_ON); //Включим внешний генератор
  while (SUCCESS != RCC_WaitForHSEStartUp()); //Подождем запуска генератора
  RCC_PLLCmd(DISABLE); 
  RCC_PLLConfig(RCC_PLLSource_PREDIV1,RCC_PLLMul_12); //Вход ПЛЛ внешний генератор умножим на 12
  RCC_PLLCmd(ENABLE);  
  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);   //Системное тактирование от ПЛЛ
  RCC_HCLKConfig(RCC_SYSCLK_Div1);      //Тактирование AHB с делением 1
  
  RCC_PCLKConfig(RCC_HCLK_Div8);        //Тактирование переферии с делением 8
  RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div2);       //Тактирование АЦП
  RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);         //Тактируем шину I2C от системного тактирования
  RCC_USARTCLKConfig(RCC_USART1CLK_PCLK);       //Тактируем UART от шини  переферии
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA + RCC_AHBPeriph_GPIOB,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 + RCC_APB2Periph_USART1 + RCC_APB2Periph_TIM1 + RCC_APB2Periph_TIM15, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
#ifdef MCO_ENABLE
  GPIOA_Struct_init.GPIO_Pin = GPIO_Pin_8;
  GPIOA_Struct_init.GPIO_Mode = GPIO_Mode_AF;
  GPIOA_Struct_init.GPIO_Speed = GPIO_Speed_Level_2;
  GPIOA_Struct_init.GPIO_OType = GPIO_OType_PP;
  GPIO_Init(GPIOA,&GPIOA_Struct_init);
  RCC_MCOConfig(RCC_MCOSource_SYSCLK);
  while (1);
#else
  RCC_MCOConfig(RCC_MCOSource_NoClock);
#endif /*MCO_ENABLE  */
};
Exemple #4
0
int main(void)
{

	uint32_t x = 0;
	uint32_t y = 0;

	RCC_DeInit();
	RCC_HSEConfig(RCC_HSE_ON);
	if(RCC_WaitForHSEStartUp() == SUCCESS)
	{
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLKConfig(RCC_HCLK_Div1);
		RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_8);
		RCC_PLLCmd(ENABLE);
		while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
		while(RCC_GetSYSCLKSource() != 0x08);
	}
	generator_init();
	generator_start();
	delay_init();
	lcd_init();

	lcd_clear();
	lcd_dma_start();


	for (x=0;x<50;x++) {
		while (lcd_is_busy());
		lcd_noise();
		lcd_dma_start();
	}


	while (lcd_is_busy());

	for (x=0;x<patternWidthPages*patternHeightPixels;x++)
		lcd_buf[x] = patternBitmaps[x];

	print(1,0,"PLEASE",6);
	print(0,7,"STAND_BY",8);

	while (lcd_is_busy());
	lcd_dma_start();

	delay_ms(20000);


	for (x=0;x<patternWidthPages*patternHeightPixels;x++)
		lcd_buf[x] = patternBitmaps[x];

	for (x=9;x>0;x--) {
		putchar_big(3,3,'0'+x);
		while (lcd_is_busy());
		lcd_dma_start();
		delay_ms(3000);
	}

	lcd_clear();
	print(1,1,"URGENT",6);
	print(0,6,"MESSAGE!",8);
	while (lcd_is_busy());
	lcd_dma_start();
	delay_ms(3000);

	scroll_text(MESSAGE);

	delay_ms(3000);
	lcd_clear();
	print(1,1,"THAT'S",6);
	print(3,3,"ALL",3);
	print(1,5,"FOLKS!",6);
	while (lcd_is_busy());
	lcd_dma_start();

	delay_ms(100000);

	for (x=0;x<10000;x++) {
		while (lcd_is_busy());
		lcd_noise();
		lcd_dma_start();
	}

	lcd_clear();
	while (lcd_is_busy());
	lcd_dma_start();

	scroll_text(SECRET_MESSAGE);

	while(1) //Infinite loop!
	{
		while (lcd_is_busy());
		lcd_noise();
		lcd_dma_start();
	}
}