// Das ist die Display.cpp #include "Display.h" #include "stm32f3xx_hal.h" extern SPI_HandleTypeDef hspi2; #include "Display.h" Display::Display() { // Constructor implementation } Display::~Display() { // Destructor implementation } // Function to set the DC pin to LOW (tells the device whether commands are being sent or data) void Display::DC_L() { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET); } // Function to set the DC pin to HIGH (tells the device whether commands are being sent or data) void Display::DC_H() { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); } // Function to set the RESET pin to LOW void Display::RESET_L() { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET); } // Function to set the RESET pin to HIGH void Display::RESET_H() { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET); } // Function to set the CS pin to LOW (Chip-Select) void Display::CS_Active() { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); } // Function to set the CS pin to HIGH (Chip-Select) void Display::CS_Inactive() { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); } // Function to set the LED pin to LOW void Display::LED_L(){ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); } // Function to set the LED pin to HIGH void Display::LED_H(){ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); } // Function to write data to the register void Display::LCD_WR_REG(uint8_t data) { DC_L(); RESET_L(); CS_Active(); HAL_SPI_Transmit(&hspi2, &data, 1, 1000); // Pass the address of the data CS_Inactive(); } // Function to write data void Display::LCD_WR_DATA(uint8_t data) { DC_H(); RESET_L(); CS_Active(); HAL_SPI_Transmit(&hspi2, &data, 1, 1000); // Pass the address of the data CS_Inactive(); } void Display::ILI9341_Reset(void) { RESET_L(); HAL_Delay(10); RESET_H(); CS_Active(); LED_H(); } // Software reset (closes applications and clears any data in random access memory (RAM)) void Display::ILI9341_SoftReset(void) { CS_Inactive(); uint8_t cmd; cmd = 0x01; DC_L(); HAL_SPI_Transmit(&hspi2, &cmd, sizeof(cmd), 1000); } // Function to set the addressable window void Display::SetWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { // column address set CS_Active(); LCD_WR_REG(0x2A); { LCD_WR_DATA((x0 >> 8) & 0xFF); LCD_WR_DATA(x0 & 0xFF); LCD_WR_DATA((x1 >> 8) & 0xFF); LCD_WR_DATA(x1 & 0xFF); } // row address set LCD_WR_REG(0x2B); { LCD_WR_DATA((y0 >> 8) & 0xFF); LCD_WR_DATA(y0 & 0xFF); LCD_WR_DATA((y1 >> 8) & 0xFF); LCD_WR_DATA(y1 & 0xFF); } // write to RAM LCD_WR_REG(0x2C); } void Display::DrawPixel(uint16_t x, uint16_t y, uint16_t color) { CS_Active(); SetWindow(x, y, x+1, y+1); LCD_WR_DATA((color >> 8) & 0xFF); CS_Inactive(); } void Display::InvertColorOn(){ LCD_WR_REG(0x21); } void Display::ILI9341_Init(void) { CS_Inactive(); CS_Active(); // Power Control B (S-196) LCD_WR_REG(0xCF); LCD_WR_DATA(0x00); LCD_WR_DATA(0xC1); LCD_WR_DATA(0x02); // Power on sequence control (S-200) LCD_WR_REG(0xED); LCD_WR_DATA(0x64); LCD_WR_DATA(0x03); LCD_WR_DATA(0x12); LCD_WR_DATA(0x81); // Driver timing control A (S-197) LCD_WR_REG(0xE8); LCD_WR_DATA(0x85); LCD_WR_DATA(0x00); LCD_WR_DATA(0x78); // Power control A (S-195) LCD_WR_REG(0xCB); LCD_WR_DATA(0x39); LCD_WR_DATA(0x2C); LCD_WR_DATA(0x00); LCD_WR_DATA(0x34); LCD_WR_DATA(0x02); // Pump ratio control (S-202) LCD_WR_REG(0xF7); LCD_WR_DATA(0x20); // Driver timing control B (S-198) LCD_WR_REG(0xEA); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); // Power Control 1 (S-178) LCD_WR_REG(0xC0); LCD_WR_DATA(0x10); // Power Control 2 (S-179) LCD_WR_REG(0xC1); LCD_WR_DATA(0x00); // VMCTRL1 (S-180) LCD_WR_REG(0xC5); LCD_WR_DATA(0x30); LCD_WR_DATA(0x30); // VMCTRL2 (S-182) LCD_WR_REG(0xC7); LCD_WR_DATA(0xB7); // Pixel Format Set (S-134) LCD_WR_REG(0x3A); LCD_WR_DATA(0x55); // Memory Access Control (S-127) LCD_WR_REG(0x36); LCD_WR_DATA(0x08); // FRAME RATIO CONTROL, STANDARD RGB COLOR (S-155) LCD_WR_REG(0xB1); LCD_WR_DATA(0x00); LCD_WR_DATA(0x1A); // Display Function Control (S-164) LCD_WR_REG(0xB6); LCD_WR_DATA(0x08); LCD_WR_DATA(0x82); LCD_WR_DATA(0x27); /* 3GAMMA FUNCTION DISABLE */ LCD_WR_REG(0xF2); LCD_WR_DATA(0x00); // Gamma curve selected LCD_WR_REG(0x26); LCD_WR_DATA(0x01); //Positive Gamma Correction (S-188) LCD_WR_REG(0xE0); LCD_WR_DATA(0x0F); LCD_WR_DATA(0x2A); LCD_WR_DATA(0x28); LCD_WR_DATA(0x08); LCD_WR_DATA(0x54); LCD_WR_DATA(0xA9); LCD_WR_DATA(0x43); LCD_WR_DATA(0x0A); LCD_WR_DATA(0x0F); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); //Negative Gamma Correction (S-189) LCD_WR_REG(0xE1); LCD_WR_DATA(0x00); LCD_WR_DATA(0x15); LCD_WR_DATA(0x17); LCD_WR_DATA(0x07); LCD_WR_DATA(0x11); LCD_WR_DATA(0x06); LCD_WR_DATA(0x2B); LCD_WR_DATA(0x56); LCD_WR_DATA(0x3C); LCD_WR_DATA(0x05); LCD_WR_DATA(0x10); LCD_WR_DATA(0x0F); LCD_WR_DATA(0x3F); LCD_WR_DATA(0x3F); LCD_WR_DATA(0x0F); // Page Address Set (S-112) LCD_WR_REG(0x2B); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x01); LCD_WR_DATA(0x3f); // Column Address Set (S-110) LCD_WR_REG(0x2A); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0x00); LCD_WR_DATA(0xef); // EXIT SLEEP (S-101) LCD_WR_REG(0x11); CS_Inactive(); HAL_Delay(120); CS_Active(); // DISPLAY ON (S-109) LCD_WR_REG(0x29); } // Das ist die Display.h #ifndef SRC_DISPLAY_H_ #define SRC_DISPLAY_H_ #include "stm32f3xx_hal.h" class Display { public: Display(); virtual ~Display(); static void DC_L(void); static void DC_H(void); static void RESET_L(void); static void RESET_H(void); static void CS_Active(void); static void CS_Inactive(void); static void LED_L(void); static void LED_H(void); void LCD_WR_REG(uint8_t data); static void LCD_WR_DATA(uint8_t data); void ILI9341_Reset(void); void ILI9341_SoftReset(void); void ILI9341_Init(void); void SetWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); void DrawPixel(uint16_t x, uint16_t y, uint16_t color); void InvertColorOn(); }; #endif /* SRC_DISPLAY_H_ */ // Das ist mein eventLoopCPP.cpp #include "eventLoopCPP.hpp" #include #include "main.h" #include "display.h" extern "C" { #include #include "main.h" } extern SPI_HandleTypeDef hspi2; void EventLoopCpp() { HAL_Init(); Display myDisplay; myDisplay.ILI9341_Init(); myDisplay.InvertColorOn(); while (1) { } } extern "C" { void EventLoopC() { EventLoopCpp(); } } // das ist meine eventLoopCPP.hpp #ifndef EVENTLOOP_HPP_ #define EVENTLOOP_HPP_ #include #include void EventLoopCpp(); // Cpp function to call into main event loop #ifdef __cplusplus extern "C" { #endif void EventLoopC(); // C function to call into Cpp event loop from main #ifdef __cplusplus } #endif #endif /* EVENTLOOP_HPP_ */ // Und das ist meine main.c /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2023 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "ILI9341_STM32_Driver.h" #include "ILI9341_GFX.h" #include "eventLoopCPP.hpp" /* 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 ---------------------------------------------------------*/ SPI_HandleTypeDef hspi2; DMA_HandleTypeDef hdma_spi2_tx; /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_DMA_Init(void); static void MX_SPI2_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /* 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_DMA_Init(); MX_SPI2_Init(); /* USER CODE BEGIN 2 */ EventLoopC(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* 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}; /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; 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_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } } /** * @brief SPI2 Initialization Function * @param None * @retval None */ static void MX_SPI2_Init(void) { /* USER CODE BEGIN SPI2_Init 0 */ /* USER CODE END SPI2_Init 0 */ /* USER CODE BEGIN SPI2_Init 1 */ /* USER CODE END SPI2_Init 1 */ /* SPI2 parameter configuration*/ hspi2.Instance = SPI2; hspi2.Init.Mode = SPI_MODE_MASTER; hspi2.Init.Direction = SPI_DIRECTION_2LINES; hspi2.Init.DataSize = SPI_DATASIZE_8BIT; hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; hspi2.Init.CLKPhase = SPI_PHASE_1EDGE; hspi2.Init.NSS = SPI_NSS_SOFT; hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi2.Init.TIMode = SPI_TIMODE_DISABLE; hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi2.Init.CRCPolynomial = 7; hspi2.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; hspi2.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; if (HAL_SPI_Init(&hspi2) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN SPI2_Init 2 */ /* USER CODE END SPI2_Init 2 */ } /** * Enable DMA controller clock */ static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); /* DMA interrupt init */ /* DMA1_Channel5_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); } /** * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, DC_Pin|RESET_Pin|SPI2_CS_Pin|LED_Pin, GPIO_PIN_RESET); /*Configure GPIO pins : DC_Pin RESET_Pin SPI2_CS_Pin LED_Pin */ GPIO_InitStruct.Pin = DC_Pin|RESET_Pin|SPI2_CS_Pin|LED_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ } /* 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 */ __disable_irq(); while (1) { } /* 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, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ // Und das ist meine Ioc file #MicroXplorer Configuration settings - do not modify CAD.formats= CAD.pinconfig= CAD.provider= Dma.Request0=SPI2_TX Dma.RequestsNb=1 Dma.SPI2_TX.0.Direction=DMA_MEMORY_TO_PERIPH Dma.SPI2_TX.0.Instance=DMA1_Channel5 Dma.SPI2_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.SPI2_TX.0.MemInc=DMA_MINC_ENABLE Dma.SPI2_TX.0.Mode=DMA_NORMAL Dma.SPI2_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI2_TX.0.PeriphInc=DMA_PINC_DISABLE Dma.SPI2_TX.0.Priority=DMA_PRIORITY_LOW Dma.SPI2_TX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority File.Version=6 KeepUserPlacement=false Mcu.CPN=STM32F302R8T6 Mcu.Family=STM32F3 Mcu.IP0=DMA Mcu.IP1=NVIC Mcu.IP2=RCC Mcu.IP3=SPI2 Mcu.IP4=SYS Mcu.IPNb=5 Mcu.Name=STM32F302R(6-8)Tx Mcu.Package=LQFP64 Mcu.Pin0=PF0-OSC_IN Mcu.Pin1=PF1-OSC_OUT Mcu.Pin2=PA2 Mcu.Pin3=PA3 Mcu.Pin4=PA4 Mcu.Pin5=PA5 Mcu.Pin6=PB13 Mcu.Pin7=PB14 Mcu.Pin8=PB15 Mcu.Pin9=VP_SYS_VS_Systick Mcu.PinsNb=10 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F302R8Tx MxCube.Version=6.10.0 MxDb.Version=DB.6.0.100 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false NVIC.ForceEnableDMAVector=true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_0 NVIC.RCC_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:true NVIC.SPI2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:0\:0\:true\:false\:true\:true\:true\:false NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false PA2.GPIOParameters=GPIO_Label PA2.GPIO_Label=DC PA2.Locked=true PA2.Signal=GPIO_Output PA3.GPIOParameters=GPIO_Label PA3.GPIO_Label=RESET PA3.Locked=true PA3.Signal=GPIO_Output PA4.GPIOParameters=GPIO_Label PA4.GPIO_Label=SPI2_CS PA4.Locked=true PA4.Signal=GPIO_Output PA5.GPIOParameters=GPIO_Label PA5.GPIO_Label=LED PA5.Locked=true PA5.Signal=GPIO_Output PB13.Mode=Full_Duplex_Master PB13.Signal=SPI2_SCK PB14.Mode=Full_Duplex_Master PB14.Signal=SPI2_MISO PB15.Mode=Full_Duplex_Master PB15.Signal=SPI2_MOSI PF0-OSC_IN.Mode=HSE-External-Oscillator PF0-OSC_IN.Signal=RCC_OSC_IN PF1-OSC_OUT.Mode=HSE-External-Oscillator PF1-OSC_OUT.Signal=RCC_OSC_OUT PinOutPanel.RotationAngle=0 ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false ProjectManager.CompilerOptimize=6 ProjectManager.ComputerToolchain=false ProjectManager.CoupleFile=false ProjectManager.CustomerFirmwarePackage= ProjectManager.DefaultFWLocation=true ProjectManager.DeletePrevious=true ProjectManager.DeviceId=STM32F302R8Tx ProjectManager.FirmwarePackage=STM32Cube FW_F3 V1.11.4 ProjectManager.FreePins=false ProjectManager.HalAssertFull=false ProjectManager.HeapSize=0x200 ProjectManager.KeepUserCode=true ProjectManager.LastFirmware=true ProjectManager.LibraryCopy=1 ProjectManager.MainLocation=Core/Src ProjectManager.NoMain=false ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false ProjectManager.ProjectFileName=DisplayStm32.ioc ProjectManager.ProjectName=DisplayStm32 ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=true ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true RCC.ADC12outputFreq_Value=72000000 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 RCC.APB1Freq_Value=36000000 RCC.APB1TimFreq_Value=72000000 RCC.APB2Freq_Value=72000000 RCC.APB2TimFreq_Value=72000000 RCC.CortexFreq_Value=72000000 RCC.FCLKCortexFreq_Value=72000000 RCC.FamilyName=M RCC.HCLKFreq_Value=72000000 RCC.HSEPLLFreq_Value=8000000 RCC.HSE_VALUE=8000000 RCC.HSIPLLFreq_Value=4000000 RCC.HSI_VALUE=8000000 RCC.I2C1Freq_Value=8000000 RCC.I2C2Freq_Value=8000000 RCC.I2C3Freq_Value=8000000 RCC.I2SClocksFreq_Value=72000000 RCC.IPParameters=ADC12outputFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSEPLLFreq_Value,HSE_VALUE,HSIPLLFreq_Value,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SClocksFreq_Value,LSE_VALUE,LSI_VALUE,MCOFreq_Value,PLLCLKFreq_Value,PLLM,PLLMCOFreq_Value,PLLMUL,PLLN,PLLP,PLLQ,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSourceVirtual,TIM15Freq_Value,TIM16Freq_Value,TIM17Freq_Value,TIM1Freq_Value,TIM2Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOOutput2Freq_Value RCC.LSE_VALUE=32768 RCC.LSI_VALUE=40000 RCC.MCOFreq_Value=72000000 RCC.PLLCLKFreq_Value=72000000 RCC.PLLM=8 RCC.PLLMCOFreq_Value=72000000 RCC.PLLMUL=RCC_PLL_MUL9 RCC.PLLN=336 RCC.PLLP=RCC_PLLP_DIV4 RCC.PLLQ=7 RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE RCC.RTCFreq_Value=40000 RCC.RTCHSEDivFreq_Value=250000 RCC.SYSCLKFreq_VALUE=72000000 RCC.SYSCLKSourceVirtual=RCC_SYSCLKSOURCE_PLLCLK RCC.TIM15Freq_Value=72000000 RCC.TIM16Freq_Value=72000000 RCC.TIM17Freq_Value=72000000 RCC.TIM1Freq_Value=72000000 RCC.TIM2Freq_Value=72000000 RCC.USART1Freq_Value=36000000 RCC.USART2Freq_Value=32000000 RCC.USART3Freq_Value=32000000 RCC.USBFreq_Value=72000000 RCC.VCOOutput2Freq_Value=8000000 SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 SPI2.CLKPhase=SPI_PHASE_1EDGE SPI2.CLKPolarity=SPI_POLARITY_LOW SPI2.CalculateBaudRate=2.25 MBits/s SPI2.DataSize=SPI_DATASIZE_8BIT SPI2.Direction=SPI_DIRECTION_2LINES SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize,CLKPolarity,CLKPhase SPI2.Mode=SPI_MODE_MASTER SPI2.VirtualType=VM_MASTER VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick board=NUCLEO-F302R8 boardIOC=true isbadioc=false Vielen Dank