Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.02 KB | None | 0 0
  1. #include "stm32f7xx.h"
  2.  
  3. __IO uint32_t StartUpCounter = 0,
  4. HSEStatus = 0,
  5. HSEStartUp_TimeOut = 0x0500,
  6. PLLON_STATS = 0,
  7. StartUpCounterP = 0,
  8. sws_stats = 0;
  9.  
  10.  
  11.  
  12. void Clock_configuration_HSE_Max(void){  // Clock configuration
  13.  
  14. //HSE_Input = 8000000;                           //Bypass input Hz or ST-link
  15.  
  16. RCC->CR |= RCC_CR_CSSON;                         //Clock security sistem
  17.  
  18. RCC->CR |=RCC_CR_HSEBYP;                         //baypass enable
  19. RCC->CR |= RCC_CR_HSEON;                         //HIGH speed etrnal
  20. do
  21.     {
  22.         HSEStatus = RCC->CR & RCC_CR_HSERDY;        //check redy
  23.         StartUpCounter++;                           //check time oute on init
  24.     }
  25. while((HSEStatus == 0) && (StartUpCounter != HSEStartUp_TimeOut));
  26.  
  27. if ((RCC->CR & RCC_CR_HSERDY) != 0)
  28.     {
  29.         HSEStatus = (uint32_t)0x01;
  30.     }
  31. else
  32.     {
  33.       HSEStatus = (uint32_t)0x00;
  34.     }
  35.  
  36. if (HSEStatus == (uint32_t)0x01)                //если HSE запустился
  37.     {
  38.         /* Включаем буфер предвыборки FLASH */
  39.       FLASH->ACR |= FLASH_ACR_PRFTEN;
  40.         /* Конфигурируем Flash на 2 цикла ожидания */
  41.         /* Это нужно потому, что Flash не может работать на высокой частоте */
  42.         FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
  43.         FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2WS;    
  44.         /* HCLK = SYSCLK */                                          
  45.       RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
  46.         /* PCLK2 = HCLK */
  47.       RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;
  48.         /* PCLK1 = HCLK */
  49.       RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
  50.  
  51.       RCC->PLLCFGR =  0x24403604;    //    PLLM = 4     PLLN = 216      PLLP = 2
  52.  
  53.  
  54.       //APB1 = 4                                                   //делители на шины
  55.       RCC->CFGR |= RCC_CFGR_PPRE1_0
  56.                 | RCC_CFGR_PPRE1_2;
  57.       //APB2 = 2
  58.       RCC->CFGR |= RCC_CFGR_PPRE2_2;      
  59.      
  60.       RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC;
  61.       /* Включаем PLL */
  62.       RCC->CR |= RCC_CR_PLLON;
  63.                                                                                 mapB(1000000);  
  64.          
  65.         /* Ожидаем, пока PLL выставит бит готовности */
  66. do    {    
  67.        
  68.       PLLON_STATS = RCC->CR & RCC_CR_PLLRDY;
  69.       StartUpCounterP++;                                                    
  70.                                                                                 mapR(1000000);
  71.       }
  72.       while((PLLON_STATS == 0)&& (StartUpCounter != HSEStartUp_TimeOut));  
  73.      
  74.  
  75. RCC->CFGR &=~RCC_CFGR_SW; // Очистить биты SW0, SW1.
  76.    RCC->CFGR |= RCC_CFGR_SW_PLL; // Тактирование с выхода PLL.
  77.    while ((RCC->CFGR&RCC_CFGR_SWS)!=0x08) {} // Ожидание переключения на PLL.
  78.      
  79.    
  80.     }
  81. else  {                  
  82.                                                                                 mapB(100000000);            
  83.       }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement