1*225f4ba4SMatthias Ringwald /* USER CODE BEGIN Header */ 2*225f4ba4SMatthias Ringwald /** 3*225f4ba4SMatthias Ringwald ****************************************************************************** 4*225f4ba4SMatthias Ringwald * @file : main.c 5*225f4ba4SMatthias Ringwald * @brief : Main program body 6*225f4ba4SMatthias Ringwald ****************************************************************************** 7*225f4ba4SMatthias Ringwald * @attention 8*225f4ba4SMatthias Ringwald * 9*225f4ba4SMatthias Ringwald * <h2><center>© Copyright (c) 2019 STMicroelectronics. 10*225f4ba4SMatthias Ringwald * All rights reserved.</center></h2> 11*225f4ba4SMatthias Ringwald * 12*225f4ba4SMatthias Ringwald * This software component is licensed by ST under BSD 3-Clause license, 13*225f4ba4SMatthias Ringwald * the "License"; You may not use this file except in compliance with the 14*225f4ba4SMatthias Ringwald * License. You may obtain a copy of the License at: 15*225f4ba4SMatthias Ringwald * opensource.org/licenses/BSD-3-Clause 16*225f4ba4SMatthias Ringwald * 17*225f4ba4SMatthias Ringwald ****************************************************************************** 18*225f4ba4SMatthias Ringwald */ 19*225f4ba4SMatthias Ringwald /* USER CODE END Header */ 20*225f4ba4SMatthias Ringwald 21*225f4ba4SMatthias Ringwald /* Includes ------------------------------------------------------------------*/ 22*225f4ba4SMatthias Ringwald #include "main.h" 23*225f4ba4SMatthias Ringwald #include "dma.h" 24*225f4ba4SMatthias Ringwald #include "usart.h" 25*225f4ba4SMatthias Ringwald #include "gpio.h" 26*225f4ba4SMatthias Ringwald 27*225f4ba4SMatthias Ringwald /* Private includes ----------------------------------------------------------*/ 28*225f4ba4SMatthias Ringwald /* USER CODE BEGIN Includes */ 29*225f4ba4SMatthias Ringwald #include "port.h" 30*225f4ba4SMatthias Ringwald /* USER CODE END Includes */ 31*225f4ba4SMatthias Ringwald 32*225f4ba4SMatthias Ringwald /* Private typedef -----------------------------------------------------------*/ 33*225f4ba4SMatthias Ringwald /* USER CODE BEGIN PTD */ 34*225f4ba4SMatthias Ringwald 35*225f4ba4SMatthias Ringwald /* USER CODE END PTD */ 36*225f4ba4SMatthias Ringwald 37*225f4ba4SMatthias Ringwald /* Private define ------------------------------------------------------------*/ 38*225f4ba4SMatthias Ringwald /* USER CODE BEGIN PD */ 39*225f4ba4SMatthias Ringwald 40*225f4ba4SMatthias Ringwald /* USER CODE END PD */ 41*225f4ba4SMatthias Ringwald 42*225f4ba4SMatthias Ringwald /* Private macro -------------------------------------------------------------*/ 43*225f4ba4SMatthias Ringwald /* USER CODE BEGIN PM */ 44*225f4ba4SMatthias Ringwald 45*225f4ba4SMatthias Ringwald /* USER CODE END PM */ 46*225f4ba4SMatthias Ringwald 47*225f4ba4SMatthias Ringwald /* Private variables ---------------------------------------------------------*/ 48*225f4ba4SMatthias Ringwald 49*225f4ba4SMatthias Ringwald /* USER CODE BEGIN PV */ 50*225f4ba4SMatthias Ringwald 51*225f4ba4SMatthias Ringwald /* USER CODE END PV */ 52*225f4ba4SMatthias Ringwald 53*225f4ba4SMatthias Ringwald /* Private function prototypes -----------------------------------------------*/ 54*225f4ba4SMatthias Ringwald void SystemClock_Config(void); 55*225f4ba4SMatthias Ringwald /* USER CODE BEGIN PFP */ 56*225f4ba4SMatthias Ringwald 57*225f4ba4SMatthias Ringwald /* USER CODE END PFP */ 58*225f4ba4SMatthias Ringwald 59*225f4ba4SMatthias Ringwald /* Private user code ---------------------------------------------------------*/ 60*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 0 */ 61*225f4ba4SMatthias Ringwald 62*225f4ba4SMatthias Ringwald /* USER CODE END 0 */ 63*225f4ba4SMatthias Ringwald 64*225f4ba4SMatthias Ringwald /** 65*225f4ba4SMatthias Ringwald * @brief The application entry point. 66*225f4ba4SMatthias Ringwald * @retval int 67*225f4ba4SMatthias Ringwald */ 68*225f4ba4SMatthias Ringwald int main(void) 69*225f4ba4SMatthias Ringwald { 70*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 1 */ 71*225f4ba4SMatthias Ringwald 72*225f4ba4SMatthias Ringwald /* USER CODE END 1 */ 73*225f4ba4SMatthias Ringwald 74*225f4ba4SMatthias Ringwald /* MCU Configuration--------------------------------------------------------*/ 75*225f4ba4SMatthias Ringwald 76*225f4ba4SMatthias Ringwald /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ 77*225f4ba4SMatthias Ringwald HAL_Init(); 78*225f4ba4SMatthias Ringwald 79*225f4ba4SMatthias Ringwald /* USER CODE BEGIN Init */ 80*225f4ba4SMatthias Ringwald 81*225f4ba4SMatthias Ringwald /* USER CODE END Init */ 82*225f4ba4SMatthias Ringwald 83*225f4ba4SMatthias Ringwald /* Configure the system clock */ 84*225f4ba4SMatthias Ringwald SystemClock_Config(); 85*225f4ba4SMatthias Ringwald 86*225f4ba4SMatthias Ringwald /* USER CODE BEGIN SysInit */ 87*225f4ba4SMatthias Ringwald 88*225f4ba4SMatthias Ringwald /* USER CODE END SysInit */ 89*225f4ba4SMatthias Ringwald 90*225f4ba4SMatthias Ringwald /* Initialize all configured peripherals */ 91*225f4ba4SMatthias Ringwald MX_GPIO_Init(); 92*225f4ba4SMatthias Ringwald MX_DMA_Init(); 93*225f4ba4SMatthias Ringwald MX_USART2_UART_Init(); 94*225f4ba4SMatthias Ringwald MX_USART3_UART_Init(); 95*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 2 */ 96*225f4ba4SMatthias Ringwald // jump to BTstack port 97*225f4ba4SMatthias Ringwald port_main(); 98*225f4ba4SMatthias Ringwald /* USER CODE END 2 */ 99*225f4ba4SMatthias Ringwald 100*225f4ba4SMatthias Ringwald /* Infinite loop */ 101*225f4ba4SMatthias Ringwald /* USER CODE BEGIN WHILE */ 102*225f4ba4SMatthias Ringwald while (1) 103*225f4ba4SMatthias Ringwald { 104*225f4ba4SMatthias Ringwald /* USER CODE END WHILE */ 105*225f4ba4SMatthias Ringwald 106*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 3 */ 107*225f4ba4SMatthias Ringwald } 108*225f4ba4SMatthias Ringwald /* USER CODE END 3 */ 109*225f4ba4SMatthias Ringwald } 110*225f4ba4SMatthias Ringwald 111*225f4ba4SMatthias Ringwald /** 112*225f4ba4SMatthias Ringwald * @brief System Clock Configuration 113*225f4ba4SMatthias Ringwald * @retval None 114*225f4ba4SMatthias Ringwald */ 115*225f4ba4SMatthias Ringwald void SystemClock_Config(void) 116*225f4ba4SMatthias Ringwald { 117*225f4ba4SMatthias Ringwald RCC_OscInitTypeDef RCC_OscInitStruct = {0}; 118*225f4ba4SMatthias Ringwald RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 119*225f4ba4SMatthias Ringwald 120*225f4ba4SMatthias Ringwald /** Configure the main internal regulator output voltage 121*225f4ba4SMatthias Ringwald */ 122*225f4ba4SMatthias Ringwald __HAL_RCC_PWR_CLK_ENABLE(); 123*225f4ba4SMatthias Ringwald __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); 124*225f4ba4SMatthias Ringwald /** Initializes the CPU, AHB and APB busses clocks 125*225f4ba4SMatthias Ringwald */ 126*225f4ba4SMatthias Ringwald RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; 127*225f4ba4SMatthias Ringwald RCC_OscInitStruct.HSIState = RCC_HSI_ON; 128*225f4ba4SMatthias Ringwald RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; 129*225f4ba4SMatthias Ringwald RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 130*225f4ba4SMatthias Ringwald RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; 131*225f4ba4SMatthias Ringwald RCC_OscInitStruct.PLL.PLLM = 8; 132*225f4ba4SMatthias Ringwald RCC_OscInitStruct.PLL.PLLN = 64; 133*225f4ba4SMatthias Ringwald RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; 134*225f4ba4SMatthias Ringwald RCC_OscInitStruct.PLL.PLLQ = 7; 135*225f4ba4SMatthias Ringwald if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 136*225f4ba4SMatthias Ringwald { 137*225f4ba4SMatthias Ringwald Error_Handler(); 138*225f4ba4SMatthias Ringwald } 139*225f4ba4SMatthias Ringwald /** Initializes the CPU, AHB and APB busses clocks 140*225f4ba4SMatthias Ringwald */ 141*225f4ba4SMatthias Ringwald RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK 142*225f4ba4SMatthias Ringwald |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; 143*225f4ba4SMatthias Ringwald RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 144*225f4ba4SMatthias Ringwald RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; 145*225f4ba4SMatthias Ringwald RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; 146*225f4ba4SMatthias Ringwald RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4; 147*225f4ba4SMatthias Ringwald 148*225f4ba4SMatthias Ringwald if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) 149*225f4ba4SMatthias Ringwald { 150*225f4ba4SMatthias Ringwald Error_Handler(); 151*225f4ba4SMatthias Ringwald } 152*225f4ba4SMatthias Ringwald } 153*225f4ba4SMatthias Ringwald 154*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 4 */ 155*225f4ba4SMatthias Ringwald 156*225f4ba4SMatthias Ringwald /* USER CODE END 4 */ 157*225f4ba4SMatthias Ringwald 158*225f4ba4SMatthias Ringwald /** 159*225f4ba4SMatthias Ringwald * @brief This function is executed in case of error occurrence. 160*225f4ba4SMatthias Ringwald * @retval None 161*225f4ba4SMatthias Ringwald */ 162*225f4ba4SMatthias Ringwald void Error_Handler(void) 163*225f4ba4SMatthias Ringwald { 164*225f4ba4SMatthias Ringwald /* USER CODE BEGIN Error_Handler_Debug */ 165*225f4ba4SMatthias Ringwald /* User can add his own implementation to report the HAL error return state */ 166*225f4ba4SMatthias Ringwald 167*225f4ba4SMatthias Ringwald /* USER CODE END Error_Handler_Debug */ 168*225f4ba4SMatthias Ringwald } 169*225f4ba4SMatthias Ringwald 170*225f4ba4SMatthias Ringwald #ifdef USE_FULL_ASSERT 171*225f4ba4SMatthias Ringwald /** 172*225f4ba4SMatthias Ringwald * @brief Reports the name of the source file and the source line number 173*225f4ba4SMatthias Ringwald * where the assert_param error has occurred. 174*225f4ba4SMatthias Ringwald * @param file: pointer to the source file name 175*225f4ba4SMatthias Ringwald * @param line: assert_param error line source number 176*225f4ba4SMatthias Ringwald * @retval None 177*225f4ba4SMatthias Ringwald */ 178*225f4ba4SMatthias Ringwald void assert_failed(uint8_t *file, uint32_t line) 179*225f4ba4SMatthias Ringwald { 180*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 6 */ 181*225f4ba4SMatthias Ringwald /* User can add his own implementation to report the file name and line number, 182*225f4ba4SMatthias Ringwald tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ 183*225f4ba4SMatthias Ringwald /* USER CODE END 6 */ 184*225f4ba4SMatthias Ringwald } 185*225f4ba4SMatthias Ringwald #endif /* USE_FULL_ASSERT */ 186*225f4ba4SMatthias Ringwald 187*225f4ba4SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 188