diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -96,6 +96,7 @@ OBJCOPY=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PR AS=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-as AR=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-ar GDB=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-gdb +SIZE=$(TOOLCHAIN_PATH)/$(TOOLCHAIN_PREFIX)-size all: $(OBJ) @@ -110,3 +111,9 @@ clean: rm -f $(TARGET).elf rm -f $(TARGET).hex rm -f $(TARGET).bin + +# Display size +size: $(TARGET).elf + @echo Invoking: ARM GNU Print Size + $(SIZE) --format=berkeley $< + @echo diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -6,6 +6,54 @@ static __IO uint32_t TimingDelay; uint8_t BlinkSpeed = 0; +ErrorStatus HSEStartUpStatus; +// Clock config +void RCC_Configuration(void) +{ + /* RCC system reset(for debug purpose) */ + RCC_DeInit(); + + /* Enable HSE */ + RCC_HSEConfig(RCC_HSE_ON); + + /* Wait till HSE is ready */ + HSEStartUpStatus = RCC_WaitForHSEStartUp(); + + if(HSEStartUpStatus == SUCCESS) + { + /* HCLK = SYSCLK */ + RCC_HCLKConfig(RCC_SYSCLK_Div1); + + /* PCLK2 = HCLK */ + RCC_PCLK2Config(RCC_HCLK_Div1); + + /* PCLK1 = HCLK/2 */ + RCC_PCLK1Config(RCC_HCLK_Div2); + + /* PLLCLK = 8MHz * 8 = ?? MHz */ + RCC_PLLConfig(RCC_PLLSource_HSE, RCC_PLLMul_8, RCC_PLLDiv_2); + + /* Enable PLL */ + RCC_PLLCmd(ENABLE); + + /* Wait till PLL is ready */ + while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) + { + } + + /* Select PLL as system clock source */ + RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); + + /* Wait till PLL is used as system clock source */ + while(RCC_GetSYSCLKSource() != 0x08) + { + } + } + + /* Enable GPIO_LED clock */ +// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_LED, ENABLE); +} + /* Main */ int main(void) { @@ -16,6 +64,7 @@ int main(void) STM_EVAL_LEDInit(LED4); +// RCC_Configuration(); /* Initialize User_Button on STM32L100C-Discovery */ //STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_GPIO); @@ -26,6 +75,10 @@ int main(void) /* Initiate Blink Speed variable */ BlinkSpeed = 1; + while(1) { + ITM_SendChar('!'); + } + /* Init lcd driver */ SSD1303_Init(); SSD1303_DrawPoint(3,3,1);