summaryrefslogtreecommitdiff
path: root/Core/Src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'Core/Src/main.c')
-rw-r--r--Core/Src/main.c249
1 files changed, 249 insertions, 0 deletions
diff --git a/Core/Src/main.c b/Core/Src/main.c
new file mode 100644
index 0000000..2ec05eb
--- /dev/null
+++ b/Core/Src/main.c
@@ -0,0 +1,249 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+ * All rights reserved.</center></h2>
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usart.h"
+#include "gpio.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "led.h"
+#include "button.h"
+#include "simon.h"
+#include "lcd_1602.h"
+/* USER CODE END Includes */
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+
+/* USER CODE BEGIN 0 */
+//Declaration des leds et buttons
+LED_TypeDef led_rouge; //rouge
+LED_TypeDef led_verte; //verte
+LED_TypeDef led_jaune; //jaune
+LED_TypeDef led_system; //vert sur la carte
+
+BUTTON_TypeDef button_rouge; //rouge
+BUTTON_TypeDef button_vert; //vert
+BUTTON_TypeDef button_jaune; //jaune
+BUTTON_TypeDef button_start; //gris
+BUTTON_TypeDef button_system; //bleu sur la carte
+//
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_USART2_UART_Init();
+ /* USER CODE BEGIN 2 */
+
+//
+ //configuration de l'horloge du système en 16MHz
+ RCC->CR|=1; //activer HSI
+ RCC->CFGR&=~(0b11);
+ RCC->CFGR|=01; //selection de HSI
+ HAL_InitTick(16000000);
+//
+
+// Init de nos leds et buttons
+ Led_init(&led_rouge, GPIOA,5); //led_rouge sur PA5
+ Led_init(&led_verte, GPIOA,6); //led_verte sur PA6
+ Led_init(&led_jaune, GPIOA,7); //led_jaune sur PA7
+ Led_init(&led_system, GPIOB,6); //led_system sur PB6
+
+ Button_init(&button_rouge, GPIOC, 13); //button_jaune sur PC13
+ Button_init(&button_vert, GPIOC, 14); //button_vert sur PC13
+ Button_init(&button_jaune, GPIOC, 15); //button_jaune sur PC13
+ Button_init(&button_start, GPIOH, 0); //button_start sur PH0
+ Button_init(&button_system, GPIOH, 1); //button_system sur PH1
+//
+
+/* EXEMPLE D'UTILISATION POUR LED ET BUTTON
+ uint8_t last_button_state = 1; //button non appuyé
+ uint8_t current_button_state = 1; //button non appuyé
+
+ for (;;) {
+ //lire l’état courant
+ current_button_state = Button_State(&button_system);
+ //si front descendant (bouton appuyé)
+ if (last_button_state == 1 && (current_button_state == 0)) {
+ Led_turnOn(&led_system); //allume
+ //suppression des rebonds
+ HAL_Delay(20);
+ }
+ //si front montant (bouton relâché)
+ if (last_button_state == 0 && (current_button_state != 0)) {
+ //suppression des rebonds
+ HAL_Delay(20);
+ Led_turnOff(&led_system); //eteind
+ }
+ //mise à jour de l’état précédent du bouton
+ last_button_state = current_button_state;
+ }
+*/
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+
+ while (1)
+ {
+ /* USER CODE BEGIN WHILE */
+
+ lcd_init();
+ lcd_clr();
+ lcd_gotoxy(0,0);
+ lcd_puts("Hello World !");
+
+ /* USER CODE END WHILE */
+ }
+ /* USER CODE BEGIN 3 */
+
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2;
+ PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/* USER CODE BEGIN 4 */
+
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+
+ /* USER CODE END Error_Handler_Debug */
+}
+
+#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 CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/