#include "main.h" #include "stm32l100c_discovery.h" #include "ssd1306.h" 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) { RCC_ClocksTypeDef RCC_Clocks; /* Configure LED3 and LED4 on STM32L100C-Discovery */ STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); // RCC_Configuration(); /* Initialize User_Button on STM32L100C-Discovery */ //STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_GPIO); /* SysTick end of count event each 1ms */ RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000); /* Initiate Blink Speed variable */ BlinkSpeed = 1; while(1) { ITM_SendChar('!'); } /* Init lcd driver */ SSD1303_Init(); SSD1303_DrawPoint(3,3,1); SSD1303_DrawPoint(5,5,0); STM_EVAL_LEDOn(LED4); Delay(1000); STM_EVAL_LEDOff(LED4); Delay(1000); while(1) { /* Turn on LD4 Blue LED during 1s each time User button is pressed */ STM_EVAL_LEDOn(LED4); //STM_EVAL_LEDOn(LED3); /* wait for 1s */ Delay(300); /* Turn off LD4 Blue LED after 1s each time User button is pressed */ STM_EVAL_LEDOff(LED4); Delay(300); } } /** * @brief Inserts a delay time. * @param nTime: specifies the delay time length, in 1 ms. * @retval None */ void Delay(__IO uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); } /** * @brief Decrements the TimingDelay variable. * @param None * @retval None */ void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */ while (1) {} } #endif