Advertisement
Slightom

SW_PS3_zad2_main

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