Advertisement
Slightom

SW_PS3_zad1_main

Mar 12th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.17 KB | None | 0 0
  1. #include "stm32f10x.h"
  2. #define SysTick_Frequency 9000000 // 9MHz
  3.  
  4. void GPIO_Config(void);
  5. void RCC_Config(void);
  6.  
  7.  
  8. void Delay (uint32_t ms)
  9. {
  10.     if (SysTick_Config(SysTick_Frequency / 1000 * ms))
  11.     {
  12.         while(1);
  13.     }
  14.     SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
  15. }
  16.  
  17.  
  18. int main(void)
  19. {
  20.     RCC_Config();
  21.     GPIO_Config();
  22.    
  23.     Delay(500);
  24.        
  25.     while (1)
  26.     {
  27.         /*Tu nalezy umiescic glowny kod programu*/
  28.     };
  29.    
  30.     return 0;
  31. }
  32.  
  33.  
  34.  
  35.  
  36. void RCC_Config(void)
  37. //konfigurowanie sygnalow taktujacych
  38. {
  39.   ErrorStatus HSEStartUpStatus;                          //zmienna opisujaca rezultat uruchomienia HSE
  40.  
  41.   RCC_DeInit();                                          //Reset ustawien RCC
  42.   RCC_HSEConfig(RCC_HSE_ON);                             //Wlaczenie HSE
  43.   HSEStartUpStatus = RCC_WaitForHSEStartUp();            //Odczekaj az HSE bedzie gotowy
  44.   if(HSEStartUpStatus == SUCCESS)
  45.   {
  46.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//
  47.     FLASH_SetLatency(FLASH_Latency_2);                   //ustaw zwloke dla pamieci Flash; zaleznie od taktowania rdzenia
  48.                                                          //0:<24MHz; 1:24~48MHz; 2:>48MHz
  49.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                     //ustaw HCLK=SYSCLK
  50.     RCC_PCLK2Config(RCC_HCLK_Div1);                      //ustaw PCLK2=HCLK
  51.     RCC_PCLK1Config(RCC_HCLK_Div2);                      //ustaw PCLK1=HCLK/2
  52.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //ustaw PLLCLK = HSE*9 czyli 8MHz * 9 = 72 MHz
  53.                                                          //inne przykladowe konfiguracje:
  54.                                                            //RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9); //ustaw PLLCLK = HSI/2*9 czyli 8MHz / 2 * 9 = 36 MHz
  55.                                                            //RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_9); //ustaw PLLCLK = HSE/2*9 czyli 8MHz / 2 * 9 = 36 MHz
  56.     RCC_PLLCmd(ENABLE);                                  //wlacz PLL
  57.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  //odczekaj na poprawne uruchomienie PLL
  58.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);           //ustaw PLL jako zrodlo sygnalu zegarowego
  59.     while(RCC_GetSYSCLKSource() != 0x08);                //odczekaj az PLL bedzie sygnalem zegarowym systemu
  60.  
  61.     /*Tu nalezy umiescic kod zwiazany z konfiguracja sygnalow zegarowych potrzebnych w programie peryferiow*/
  62.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);//wlacz taktowanie portu GPIO B
  63.  
  64.   } else {
  65.   }
  66. }
  67.  
  68.  
  69.  
  70. void GPIO_Config(void)
  71. {
  72.   //konfigurowanie portow GPIO
  73.   GPIO_InitTypeDef  GPIO_InitStructure;
  74.  
  75.   /*Tu nalezy umiescic kod zwiazany z konfiguracja poszczegolnych portow GPIO potrzebnych w programie*/
  76.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 ;
  77.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  78.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  79.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  80.    
  81.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 ;
  82.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  83.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  84.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement