Rev Author Line No. Line
2067 kakl 1  
2 #include "stm32f10x_it.h"
3  
4  
5 GPIO_InitTypeDef GPIO_InitStructure;
6 ErrorStatus HSEStartUpStatus;
7  
8  
9 void RCC_Configuration(void);
10 void Delay(vu32 nCount);
11  
12  
13  
14 void SystemInit()
15 {
16  
17 /* Configure the system clocks */
18 RCC_Configuration();
19  
20 /* NVIC Configuration */
21 // NVIC_Configuration();
22  
23 /* Enable GPIOC clock */
24 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
25 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
26  
27 /* Configure PC.4 as Output push-pull */
28 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
29 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
30 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
31 GPIO_Init(GPIOC, &GPIO_InitStructure);
32  
33 /* Configure PC.4 as Output push-pull */
34 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8;
35 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
36 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
37 GPIO_Init(GPIOB, &GPIO_InitStructure);
38  
39 }
40  
41  
42 int main(void)
43 {
44 while (1)
45 {
46 GPIO_SetBits(GPIOC, GPIO_Pin_5);
47 GPIO_ResetBits(GPIOC, GPIO_Pin_4);
48 GPIO_SetBits(GPIOB, GPIO_Pin_7);
49 GPIO_ResetBits(GPIOB, GPIO_Pin_8);
2068 kakl 50 Delay(0x4fFFFF);
2067 kakl 51  
52 GPIO_SetBits(GPIOC, GPIO_Pin_4);
53 GPIO_ResetBits(GPIOC, GPIO_Pin_5);
54 GPIO_SetBits(GPIOB, GPIO_Pin_8);
55 GPIO_ResetBits(GPIOB, GPIO_Pin_7);
2068 kakl 56 Delay(0x4fFFFF);
2067 kakl 57 }
58 }
59  
60 /*******************************************************************************
61 * Function Name : RCC_Configuration
62 * Description : Configures the different system clocks.
63 * Input : None
64 * Output : None
65 * Return : None
66 *******************************************************************************/
67 void RCC_Configuration(void)
68 {
69 /* RCC system reset(for debug purpose) */
70 RCC_DeInit();
71  
72 /* Enable HSE */
73 RCC_HSEConfig(RCC_HSE_ON);
74  
75 /* Wait till HSE is ready */
76 HSEStartUpStatus = RCC_WaitForHSEStartUp();
77  
78 if(HSEStartUpStatus == SUCCESS)
79 {
80 /* Enable Prefetch Buffer */
81 // FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
82  
83 /* Flash 2 wait state */
84 // FLASH_SetLatency(FLASH_Latency_2);
85  
86 /* HCLK = SYSCLK */
87 RCC_HCLKConfig(RCC_SYSCLK_Div1);
88  
89 /* PCLK2 = HCLK */
90 RCC_PCLK2Config(RCC_HCLK_Div1);
91  
92 /* PCLK1 = HCLK/2 */
93 RCC_PCLK1Config(RCC_HCLK_Div2);
94  
95 /* PLLCLK = 8MHz * 4 = 32 MHz */
96 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_2);
97  
98 /* Enable PLL */
99 RCC_PLLCmd(ENABLE);
100  
101 /* Wait till PLL is ready */
102 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
103 {
104 }
105  
106 /* Select PLL as system clock source */
107 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
108  
109 /* Wait till PLL is used as system clock source */
110 while(RCC_GetSYSCLKSource() != 0x08)
111 {
112 }
113 }
114 }
115  
116  
117  
118 /*******************************************************************************
119 * Function Name : Delay
120 * Description : Inserts a delay time.
121 * Input : nCount: specifies the delay time length.
122 * Output : None
123 * Return : None
124 *******************************************************************************/
125 void Delay(vu32 nCount)
126 {
127 for(; nCount != 0; nCount--);
128 }
129