diff --git a/main.c b/main.c new file mode 100644 --- /dev/null +++ b/main.c @@ -0,0 +1,168 @@ +/** + ****************************************************************************** + * @file main.c + * @author MCD Application Team + * @version V1.0.0 + * @date 29-July-2013 + * @brief Main program body + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2013 STMicroelectronics

+ * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32l100c_discovery.h" +/** @addtogroup STM32L100C-Discovery_Demo + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +static __IO uint32_t TimingDelay; +uint8_t BlinkSpeed = 0; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** + * @brief Main program. + * @param None + * @retval None + */ +int main(void) +{ + RCC_ClocksTypeDef RCC_Clocks; + + /* Configure LED3 and LED4 on STM32L100C-Discovery */ + STM_EVAL_LEDInit(LED3); + STM_EVAL_LEDInit(LED4); + + /* 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) + { + /* Check if the user button is pressed */ + if(STM_EVAL_PBGetState(BUTTON_USER)== SET) + { + /* BlinkSpeed: 1 -> 2 -> 0, then re-cycle */ + /* Turn on LD4 Blue LED during 1s each time User button is pressed */ + STM_EVAL_LEDOn(LED4); + + /* wait for 1s */ + Delay(1000); + + /* Turn off LD4 Blue LED after 1s each time User button is pressed */ + STM_EVAL_LEDOff(LED4); + + /* Increment the blink speed counter */ + BlinkSpeed++; + + /* Default value for blink speed counter */ + if(BlinkSpeed == 3) + { + BlinkSpeed = 0; + } + } + + /* Test on blink speed */ + if(BlinkSpeed == 2) + { + /* LED3 toggles each 100 ms */ + STM_EVAL_LEDToggle(LED3); + + /* maintain LED3 status for 100ms */ + Delay(100); + } + else if(BlinkSpeed == 1) + { + /* LED3 toggles each 200 ms */ + STM_EVAL_LEDToggle(LED3); + + /* maintain LED3 status for 200ms */ + Delay(200); + } + else + { + /* LED3 Off */ + STM_EVAL_LEDOff(LED3); + } + } +} + +/** + * @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 + +/** + * @} + */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/