Make CAN work

This commit is contained in:
Jasper Blanckenburg 2023-03-08 20:20:01 +01:00
parent 81b7a23a34
commit 0ddea60a50
13 changed files with 227 additions and 74 deletions

View File

@ -30,6 +30,7 @@
#include "tx_api.h" #include "tx_api.h"
#include "tx_port.h" #include "tx_port.h"
#include "ui.h" #include "ui.h"
#include "vehicle.h"
/* USER CODE END Includes */ /* USER CODE END Includes */
@ -64,6 +65,7 @@ static TX_BYTE_POOL tx_app_byte_pool;
/* USER CODE BEGIN PV */ /* USER CODE BEGIN PV */
TX_THREAD app_thread; TX_THREAD app_thread;
TX_THREAD ui_thread; TX_THREAD ui_thread;
TX_THREAD vehicle_thread;
TX_QUEUE gui_button_queue; TX_QUEUE gui_button_queue;
/* USER CODE END PV */ /* USER CODE END PV */
@ -179,6 +181,15 @@ VOID tx_application_define(VOID *first_unused_memory) {
Error_Handler(); Error_Handler();
} }
void *vehicle_thread_stack = mem;
mem += THREAD_STACK_SIZE;
if (tx_thread_create(&vehicle_thread, "Vehicle Thread", vehicle_thread_entry,
&hfdcan1, vehicle_thread_stack, THREAD_STACK_SIZE,
THREAD_PRIO_VEHICLE, THREAD_PRIO_VEHICLE, 0,
TX_AUTO_START) != TX_SUCCESS) {
Error_Handler();
}
if (MX_TouchGFX_Init(mem) != TX_SUCCESS) { if (MX_TouchGFX_Init(mem) != TX_SUCCESS) {
Error_Handler(); Error_Handler();
} }

View File

@ -45,6 +45,7 @@ extern "C" {
#define THREAD_PRIO_APP 10 #define THREAD_PRIO_APP 10
#define THREAD_PRIO_UI 6 #define THREAD_PRIO_UI 6
#define THREAD_PRIO_VEHICLE 7
#define UI_QUEUE_SIZE 10 #define UI_QUEUE_SIZE 10
/* USER CODE END EC */ /* USER CODE END EC */

View File

@ -43,6 +43,7 @@ extern "C" {
/* USER CODE BEGIN EC */ /* USER CODE BEGIN EC */
extern volatile int ltdc_cb_triggered; extern volatile int ltdc_cb_triggered;
extern TX_QUEUE gui_button_queue; extern TX_QUEUE gui_button_queue;
extern FDCAN_HandleTypeDef hfdcan1;
/* USER CODE END EC */ /* USER CODE END EC */
/* Exported macro ------------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/
@ -62,12 +63,16 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/ /* Private defines -----------------------------------------------------------*/
#define ENC1A_Pin GPIO_PIN_3 #define ENC1A_Pin GPIO_PIN_3
#define ENC1A_GPIO_Port GPIOE #define ENC1A_GPIO_Port GPIOE
#define ENC1A_EXTI_IRQn EXTI3_IRQn
#define ENC1B_Pin GPIO_PIN_4 #define ENC1B_Pin GPIO_PIN_4
#define ENC1B_GPIO_Port GPIOE #define ENC1B_GPIO_Port GPIOE
#define ENC1B_EXTI_IRQn EXTI4_IRQn
#define ENC2A_Pin GPIO_PIN_5 #define ENC2A_Pin GPIO_PIN_5
#define ENC2A_GPIO_Port GPIOE #define ENC2A_GPIO_Port GPIOE
#define ENC2A_EXTI_IRQn EXTI9_5_IRQn
#define ENC2B_Pin GPIO_PIN_6 #define ENC2B_Pin GPIO_PIN_6
#define ENC2B_GPIO_Port GPIOE #define ENC2B_GPIO_Port GPIOE
#define ENC2B_EXTI_IRQn EXTI9_5_IRQn
#define BTN1_Pin GPIO_PIN_0 #define BTN1_Pin GPIO_PIN_0
#define BTN1_GPIO_Port GPIOF #define BTN1_GPIO_Port GPIOF
#define BTN2_Pin GPIO_PIN_1 #define BTN2_Pin GPIO_PIN_1

View File

@ -54,6 +54,8 @@ void UsageFault_Handler(void);
void DebugMon_Handler(void); void DebugMon_Handler(void);
void EXTI3_IRQHandler(void); void EXTI3_IRQHandler(void);
void EXTI4_IRQHandler(void); void EXTI4_IRQHandler(void);
void FDCAN1_IT0_IRQHandler(void);
void FDCAN1_IT1_IRQHandler(void);
void EXTI9_5_IRQHandler(void); void EXTI9_5_IRQHandler(void);
void TIM6_DAC_IRQHandler(void); void TIM6_DAC_IRQHandler(void);
void LTDC_IRQHandler(void); void LTDC_IRQHandler(void);

8
Core/Inc/vehicle.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef __INC_VEHICLE_H
#define __INC_VEHICLE_H
#include "tx_port.h"
void vehicle_thread_entry(ULONG hfdcan_addr);
#endif // __INC_VEHICLE_H

View File

@ -169,7 +169,7 @@ void SystemClock_Config(void) {
/** Configure the main internal regulator output voltage /** Configure the main internal regulator output voltage
*/ */
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) { while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {
} }
@ -187,9 +187,9 @@ void SystemClock_Config(void) {
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLM = 4;
RCC_OscInitStruct.PLL.PLLN = 8; RCC_OscInitStruct.PLL.PLLN = 20;
RCC_OscInitStruct.PLL.PLLP = 2; RCC_OscInitStruct.PLL.PLLP = 2;
RCC_OscInitStruct.PLL.PLLQ = 128; RCC_OscInitStruct.PLL.PLLQ = 4;
RCC_OscInitStruct.PLL.PLLR = 2; RCC_OscInitStruct.PLL.PLLR = 2;
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3; RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
@ -211,7 +211,7 @@ void SystemClock_Config(void) {
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) {
Error_Handler(); Error_Handler();
} }
} }
@ -300,18 +300,18 @@ static void MX_FDCAN1_Init(void) {
hfdcan1.Init.AutoRetransmission = DISABLE; hfdcan1.Init.AutoRetransmission = DISABLE;
hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.TransmitPause = DISABLE;
hfdcan1.Init.ProtocolException = DISABLE; hfdcan1.Init.ProtocolException = DISABLE;
hfdcan1.Init.NominalPrescaler = 16; hfdcan1.Init.NominalPrescaler = 2;
hfdcan1.Init.NominalSyncJumpWidth = 1; hfdcan1.Init.NominalSyncJumpWidth = 1;
hfdcan1.Init.NominalTimeSeg1 = 2; hfdcan1.Init.NominalTimeSeg1 = 63;
hfdcan1.Init.NominalTimeSeg2 = 2; hfdcan1.Init.NominalTimeSeg2 = 16;
hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataPrescaler = 1;
hfdcan1.Init.DataSyncJumpWidth = 1; hfdcan1.Init.DataSyncJumpWidth = 1;
hfdcan1.Init.DataTimeSeg1 = 1; hfdcan1.Init.DataTimeSeg1 = 1;
hfdcan1.Init.DataTimeSeg2 = 1; hfdcan1.Init.DataTimeSeg2 = 1;
hfdcan1.Init.MessageRAMOffset = 0; hfdcan1.Init.MessageRAMOffset = 0;
hfdcan1.Init.StdFiltersNbr = 0; hfdcan1.Init.StdFiltersNbr = 1;
hfdcan1.Init.ExtFiltersNbr = 0; hfdcan1.Init.ExtFiltersNbr = 0;
hfdcan1.Init.RxFifo0ElmtsNbr = 0; hfdcan1.Init.RxFifo0ElmtsNbr = 16;
hfdcan1.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8; hfdcan1.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
hfdcan1.Init.RxFifo1ElmtsNbr = 0; hfdcan1.Init.RxFifo1ElmtsNbr = 0;
hfdcan1.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8; hfdcan1.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
@ -319,7 +319,7 @@ static void MX_FDCAN1_Init(void) {
hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8; hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
hfdcan1.Init.TxEventsNbr = 0; hfdcan1.Init.TxEventsNbr = 0;
hfdcan1.Init.TxBuffersNbr = 0; hfdcan1.Init.TxBuffersNbr = 0;
hfdcan1.Init.TxFifoQueueElmtsNbr = 0; hfdcan1.Init.TxFifoQueueElmtsNbr = 1;
hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION; hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8; hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) { if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) {

View File

@ -205,6 +205,11 @@ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan)
GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1; GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/* FDCAN1 interrupt Init */
HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn);
HAL_NVIC_SetPriority(FDCAN1_IT1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(FDCAN1_IT1_IRQn);
/* USER CODE BEGIN FDCAN1_MspInit 1 */ /* USER CODE BEGIN FDCAN1_MspInit 1 */
/* USER CODE END FDCAN1_MspInit 1 */ /* USER CODE END FDCAN1_MspInit 1 */
@ -234,6 +239,9 @@ void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* hfdcan)
*/ */
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_1); HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_1);
/* FDCAN1 interrupt DeInit */
HAL_NVIC_DisableIRQ(FDCAN1_IT0_IRQn);
HAL_NVIC_DisableIRQ(FDCAN1_IT1_IRQn);
/* USER CODE BEGIN FDCAN1_MspDeInit 1 */ /* USER CODE BEGIN FDCAN1_MspDeInit 1 */
/* USER CODE END FDCAN1_MspDeInit 1 */ /* USER CODE END FDCAN1_MspDeInit 1 */

View File

@ -55,6 +55,7 @@
/* USER CODE END 0 */ /* USER CODE END 0 */
/* External variables --------------------------------------------------------*/ /* External variables --------------------------------------------------------*/
extern FDCAN_HandleTypeDef hfdcan1;
extern LTDC_HandleTypeDef hltdc; extern LTDC_HandleTypeDef hltdc;
extern TIM_HandleTypeDef htim6; extern TIM_HandleTypeDef htim6;
@ -188,6 +189,34 @@ void EXTI4_IRQHandler(void)
/* USER CODE END EXTI4_IRQn 1 */ /* USER CODE END EXTI4_IRQn 1 */
} }
/**
* @brief This function handles FDCAN1 interrupt 0.
*/
void FDCAN1_IT0_IRQHandler(void)
{
/* USER CODE BEGIN FDCAN1_IT0_IRQn 0 */
/* USER CODE END FDCAN1_IT0_IRQn 0 */
HAL_FDCAN_IRQHandler(&hfdcan1);
/* USER CODE BEGIN FDCAN1_IT0_IRQn 1 */
/* USER CODE END FDCAN1_IT0_IRQn 1 */
}
/**
* @brief This function handles FDCAN1 interrupt 1.
*/
void FDCAN1_IT1_IRQHandler(void)
{
/* USER CODE BEGIN FDCAN1_IT1_IRQn 0 */
/* USER CODE END FDCAN1_IT1_IRQn 0 */
HAL_FDCAN_IRQHandler(&hfdcan1);
/* USER CODE BEGIN FDCAN1_IT1_IRQn 1 */
/* USER CODE END FDCAN1_IT1_IRQn 1 */
}
/** /**
* @brief This function handles EXTI line[9:5] interrupts. * @brief This function handles EXTI line[9:5] interrupts.
*/ */

View File

@ -66,7 +66,7 @@
.global __Vectors .global __Vectors
@ @
@ @
SYSTEM_CLOCK = 64000000 SYSTEM_CLOCK = 160000000
SYSTICK_CYCLES = ((SYSTEM_CLOCK / 100) -1) SYSTICK_CYCLES = ((SYSTEM_CLOCK / 100) -1)
.text 32 .text 32
@ -287,7 +287,7 @@ __tx_DBGHandler:
EXTERN _tx_execution_isr_exit EXTERN _tx_execution_isr_exit
; ;
; ;
SYSTEM_CLOCK EQU 64000000 SYSTEM_CLOCK EQU 160000000
SYSTICK_CYCLES EQU ((SYSTEM_CLOCK / 100) -1) SYSTICK_CYCLES EQU ((SYSTEM_CLOCK / 100) -1)
#ifdef USE_DYNAMIC_MEMORY_ALLOCATION #ifdef USE_DYNAMIC_MEMORY_ALLOCATION
RSEG FREE_MEM:DATA RSEG FREE_MEM:DATA
@ -470,7 +470,7 @@ SysTick_Handler:
@ @
@ @
SYSTEM_CLOCK = 64000000 SYSTEM_CLOCK = 160000000
SYSTICK_CYCLES = ((SYSTEM_CLOCK / 100) -1) SYSTICK_CYCLES = ((SYSTEM_CLOCK / 100) -1)
.text 32 .text 32

75
Core/Src/vehicle.c Normal file
View File

@ -0,0 +1,75 @@
#include "vehicle.h"
#include "main.h"
#include "stm32h7xx.h"
#include "stm32h7xx_hal.h"
#include "stm32h7xx_hal_fdcan.h"
#include "stm32h7xx_hal_gpio.h"
#include "tx_api.h"
#include "ui.h"
FDCAN_HandleTypeDef *hcan;
void vehicle_thread_entry(ULONG hfdcan_addr) {
hcan = (void *)hfdcan_addr;
FDCAN_FilterTypeDef filter;
filter.IdType = FDCAN_STANDARD_ID;
filter.FilterIndex = 0;
filter.FilterType = FDCAN_FILTER_MASK;
filter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
filter.FilterID1 = 0x123;
filter.FilterID2 = 0x7FF;
if (HAL_FDCAN_ConfigFilter(hcan, &filter) != HAL_OK) {
Error_Handler();
}
// Reject non-matching messages
if (HAL_FDCAN_ConfigGlobalFilter(hcan, FDCAN_REJECT, FDCAN_REJECT,
FDCAN_REJECT_REMOTE,
FDCAN_REJECT_REMOTE) != HAL_OK) {
Error_Handler();
}
if (HAL_FDCAN_Start(hcan)) {
Error_Handler();
}
if (HAL_FDCAN_ActivateNotification(hcan, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) !=
HAL_OK) {
Error_Handler();
}
FDCAN_TxHeaderTypeDef tx_header;
tx_header.IdType = FDCAN_STANDARD_ID;
tx_header.TxFrameType = FDCAN_DATA_FRAME;
tx_header.ErrorStateIndicator = FDCAN_ESI_PASSIVE;
tx_header.BitRateSwitch = FDCAN_BRS_OFF;
tx_header.FDFormat = FDCAN_CLASSIC_CAN;
tx_header.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
tx_header.MessageMarker = 0;
while (1) {
tx_header.Identifier = 0x456;
tx_header.DataLength = FDCAN_DLC_BYTES_2;
uint8_t data[] = {0xFF, 0xEE};
if (HAL_FDCAN_GetTxFifoFreeLevel(hcan) != 0) {
HAL_FDCAN_AddMessageToTxFifoQ(hcan, &tx_header, data);
}
tx_thread_sleep(10);
}
}
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan,
uint32_t RxFifo0ITs) {
if (hfdcan != hcan || (RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) == RESET) {
return;
}
static FDCAN_RxHeaderTypeDef header;
static uint8_t data[8];
if (HAL_FDCAN_GetRxMessage(hcan, FDCAN_RX_FIFO0, &header, data) != HAL_OK) {
Error_Handler();
}
if (header.IdType != FDCAN_STANDARD_ID || header.Identifier == 0x123) {
HAL_GPIO_TogglePin(STATUS2_GPIO_Port, STATUS2_Pin);
}
}

View File

@ -1,5 +1,5 @@
########################################################################################################################## ##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.18.0-B7] date: [Tue Mar 07 19:47:03 CET 2023] # File automatically-generated by tool: [projectgenerator] version: [3.18.0-B7] date: [Wed Mar 08 15:59:48 CET 2023]
########################################################################################################################## ##########################################################################################################################
# ------------------------------------------------ # ------------------------------------------------

View File

@ -45,6 +45,7 @@ Core/Src/stm32h7xx_hal_timebase_tim.c \
Core/Src/stm32h7xx_it.c \ Core/Src/stm32h7xx_it.c \
Core/Src/system_stm32h7xx.c \ Core/Src/system_stm32h7xx.c \
Core/Src/ui.c \ Core/Src/ui.c \
Core/Src/vehicle.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c \

View File

@ -5,10 +5,18 @@ CAD.pinconfig=
CAD.provider= CAD.provider=
DMA2D.ColorMode=DMA2D_OUTPUT_RGB888 DMA2D.ColorMode=DMA2D_OUTPUT_RGB888
DMA2D.IPParameters=ColorMode DMA2D.IPParameters=ColorMode
FDCAN1.CalculateBaudRateNominal=12500 FDCAN1.CalculateBaudRateNominal=500000
FDCAN1.CalculateTimeBitNominal=80000 FDCAN1.CalculateTimeBitNominal=2000
FDCAN1.CalculateTimeQuantumNominal=16000.0 FDCAN1.CalculateTimeQuantumNominal=25.0
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal FDCAN1.FrameFormat=FDCAN_FRAME_CLASSIC
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,NominalTimeSeg1,NominalSyncJumpWidth,NominalTimeSeg2,FrameFormat,StdFiltersNbr,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr
FDCAN1.NominalPrescaler=2
FDCAN1.NominalSyncJumpWidth=1
FDCAN1.NominalTimeSeg1=63
FDCAN1.NominalTimeSeg2=16
FDCAN1.RxFifo0ElmtsNbr=16
FDCAN1.StdFiltersNbr=1
FDCAN1.TxFifoQueueElmtsNbr=1
File.Version=6 File.Version=6
GPIO.groupedBy=Show All GPIO.groupedBy=Show All
JPEG.IPParameters=JPEG_RGB_FORMAT JPEG.IPParameters=JPEG_RGB_FORMAT
@ -136,6 +144,8 @@ NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:fals
NVIC.EXTI3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true NVIC.EXTI3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true
NVIC.EXTI4_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true NVIC.EXTI4_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true
NVIC.EXTI9_5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true NVIC.EXTI9_5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true
NVIC.FDCAN1_IT0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true
NVIC.FDCAN1_IT1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true
NVIC.ForceEnableDMAVector=true NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.LTDC_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true NVIC.LTDC_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true\:true
@ -407,88 +417,91 @@ ProjectManager.TargetToolchain=Makefile
ProjectManager.ToolChainLocation= ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA2D_Init-DMA2D-false-HAL-true,4-MX_FDCAN1_Init-FDCAN1-false-HAL-true,5-MX_LTDC_Init-LTDC-false-HAL-true,6-MX_JPEG_Init-JPEG-false-HAL-true,7-MX_OCTOSPI1_Init-OCTOSPI1-false-HAL-true,8-MX_SPI3_Init-SPI3-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM2_Init-TIM2-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_CRC_Init-CRC-false-HAL-true,14-MX_TouchGFX_Init-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2-false-HAL-false,15-MX_TouchGFX_Process-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA2D_Init-DMA2D-false-HAL-true,4-MX_FDCAN1_Init-FDCAN1-false-HAL-true,5-MX_LTDC_Init-LTDC-false-HAL-true,6-MX_JPEG_Init-JPEG-false-HAL-true,7-MX_OCTOSPI1_Init-OCTOSPI1-false-HAL-true,8-MX_SPI3_Init-SPI3-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM2_Init-TIM2-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_CRC_Init-CRC-false-HAL-true,14-MX_TouchGFX_Init-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2-false-HAL-false,15-MX_TouchGFX_Process-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=129000000 RCC.ADCFreq_Value=64000000
RCC.AHB12Freq_Value=64000000 RCC.AHB12Freq_Value=160000000
RCC.AHB4Freq_Value=64000000 RCC.AHB4Freq_Value=160000000
RCC.APB1Freq_Value=32000000 RCC.APB1Freq_Value=80000000
RCC.APB2Freq_Value=32000000 RCC.APB2Freq_Value=80000000
RCC.APB3Freq_Value=32000000 RCC.APB3Freq_Value=80000000
RCC.APB4Freq_Value=32000000 RCC.APB4Freq_Value=80000000
RCC.AXIClockFreq_Value=64000000 RCC.AXIClockFreq_Value=160000000
RCC.CDCPREFreq_Value=64000000 RCC.CDCPREFreq_Value=160000000
RCC.CDPPRE=RCC_APB3_DIV2 RCC.CDPPRE=RCC_APB3_DIV2
RCC.CDPPRE1=RCC_APB1_DIV2 RCC.CDPPRE1=RCC_APB1_DIV2
RCC.CDPPRE2=RCC_APB2_DIV2 RCC.CDPPRE2=RCC_APB2_DIV2
RCC.CECFreq_Value=32000 RCC.CECFreq_Value=32000
RCC.CKPERFreq_Value=64000000 RCC.CKPERFreq_Value=64000000
RCC.CortexFreq_Value=64000000 RCC.CortexFreq_Value=160000000
RCC.CpuClockFreq_Value=64000000 RCC.CpuClockFreq_Value=160000000
RCC.DAC1Freq_Value=32000 RCC.DAC1Freq_Value=32000
RCC.DAC2Freq_Value=32000 RCC.DAC2Freq_Value=32000
RCC.DFSDM2ACLkFreq_Value=32000000 RCC.DFSDM2ACLkFreq_Value=80000000
RCC.DFSDM2Freq_Value=32000000 RCC.DFSDM2Freq_Value=80000000
RCC.DFSDMACLkFreq_Value=1000000 RCC.DFSDMACLkFreq_Value=80000000
RCC.DFSDMFreq_Value=32000000 RCC.DFSDMFreq_Value=80000000
RCC.DIVM1=4 RCC.DIVM1=4
RCC.DIVM2=4
RCC.DIVM3=4 RCC.DIVM3=4
RCC.DIVN1=8 RCC.DIVN1=20
RCC.DIVN2=8
RCC.DIVN3=8 RCC.DIVN3=8
RCC.DIVP1Freq_Value=64000000 RCC.DIVP1Freq_Value=160000000
RCC.DIVP2Freq_Value=129000000 RCC.DIVP2Freq_Value=64000000
RCC.DIVP3Freq_Value=64000000 RCC.DIVP3Freq_Value=64000000
RCC.DIVQ1=128 RCC.DIVQ1=4
RCC.DIVQ1Freq_Value=1000000 RCC.DIVQ1Freq_Value=80000000
RCC.DIVQ2Freq_Value=129000000 RCC.DIVQ2=3
RCC.DIVQ2Freq_Value=42666666.666666664
RCC.DIVQ3Freq_Value=64000000 RCC.DIVQ3Freq_Value=64000000
RCC.DIVR1Freq_Value=64000000 RCC.DIVR1Freq_Value=160000000
RCC.DIVR2Freq_Value=129000000 RCC.DIVR2Freq_Value=64000000
RCC.DIVR3=14 RCC.DIVR3=14
RCC.DIVR3Freq_Value=9142857.142857144 RCC.DIVR3Freq_Value=9142857.142857144
RCC.FDCANFreq_Value=1000000 RCC.FDCANFreq_Value=80000000
RCC.FMCFreq_Value=64000000 RCC.FMCFreq_Value=160000000
RCC.FamilyName=M RCC.FamilyName=M
RCC.HCLK3ClockFreq_Value=64000000 RCC.HCLK3ClockFreq_Value=160000000
RCC.HCLKFreq_Value=64000000 RCC.HCLKFreq_Value=160000000
RCC.HSE_VALUE=24000000 RCC.HSE_VALUE=24000000
RCC.I2C123Freq_Value=32000000 RCC.I2C123Freq_Value=80000000
RCC.I2C4Freq_Value=32000000 RCC.I2C4Freq_Value=80000000
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CDCPREFreq_Value,CDPPRE,CDPPRE1,CDPPRE2,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,DAC1Freq_Value,DAC2Freq_Value,DFSDM2ACLkFreq_Value,DFSDM2Freq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM3,DIVN1,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI2AFreq_Value,SAI2BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SRDPPRE,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CDCPREFreq_Value,CDPPRE,CDPPRE1,CDPPRE2,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,DAC1Freq_Value,DAC2Freq_Value,DFSDM2ACLkFreq_Value,DFSDM2Freq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HSE_VALUE,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI2AFreq_Value,SAI2BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SRDPPRE,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
RCC.LPTIM1Freq_Value=32000000 RCC.LPTIM1Freq_Value=80000000
RCC.LPTIM2Freq_Value=32000000 RCC.LPTIM2Freq_Value=80000000
RCC.LPTIM345Freq_Value=32000000 RCC.LPTIM345Freq_Value=80000000
RCC.LPUART1Freq_Value=32000000 RCC.LPUART1Freq_Value=80000000
RCC.LTDCFreq_Value=9142857.142857144 RCC.LTDCFreq_Value=9142857.142857144
RCC.MCO1PinFreq_Value=64000000 RCC.MCO1PinFreq_Value=64000000
RCC.MCO2PinFreq_Value=64000000 RCC.MCO2PinFreq_Value=160000000
RCC.PLL2FRACN=0 RCC.PLL2FRACN=0
RCC.PLL3FRACN=0 RCC.PLL3FRACN=0
RCC.PLLFRACN=0 RCC.PLLFRACN=0
RCC.QSPIFreq_Value=64000000 RCC.QSPIFreq_Value=160000000
RCC.RNGFreq_Value=48000000 RCC.RNGFreq_Value=48000000
RCC.RTCFreq_Value=32000 RCC.RTCFreq_Value=32000
RCC.SAI1Freq_Value=1000000 RCC.SAI1Freq_Value=80000000
RCC.SAI2AFreq_Value=1000000 RCC.SAI2AFreq_Value=80000000
RCC.SAI2BFreq_Value=1000000 RCC.SAI2BFreq_Value=80000000
RCC.SDMMCFreq_Value=1000000 RCC.SDMMCFreq_Value=80000000
RCC.SPDIFRXFreq_Value=1000000 RCC.SPDIFRXFreq_Value=80000000
RCC.SPI123Freq_Value=1000000 RCC.SPI123Freq_Value=80000000
RCC.SPI45Freq_Value=32000000 RCC.SPI45Freq_Value=80000000
RCC.SPI6Freq_Value=32000000 RCC.SPI6Freq_Value=80000000
RCC.SRDPPRE=RCC_APB4_DIV2 RCC.SRDPPRE=RCC_APB4_DIV2
RCC.SWPMI1Freq_Value=32000000 RCC.SWPMI1Freq_Value=80000000
RCC.SYSCLKFreq_VALUE=64000000 RCC.SYSCLKFreq_VALUE=160000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.Tim1OutputFreq_Value=64000000 RCC.Tim1OutputFreq_Value=160000000
RCC.Tim2OutputFreq_Value=64000000 RCC.Tim2OutputFreq_Value=160000000
RCC.TraceFreq_Value=64000000 RCC.TraceFreq_Value=160000000
RCC.USART16Freq_Value=32000000 RCC.USART16Freq_Value=80000000
RCC.USART234578Freq_Value=32000000 RCC.USART234578Freq_Value=80000000
RCC.USBFreq_Value=1000000 RCC.USBFreq_Value=80000000
RCC.VCO1OutputFreq_Value=128000000 RCC.VCO1OutputFreq_Value=320000000
RCC.VCO2OutputFreq_Value=258000000 RCC.VCO2OutputFreq_Value=128000000
RCC.VCO3OutputFreq_Value=128000000 RCC.VCO3OutputFreq_Value=128000000
RCC.VCOInput1Freq_Value=16000000 RCC.VCOInput1Freq_Value=16000000
RCC.VCOInput2Freq_Value=2000000 RCC.VCOInput2Freq_Value=16000000
RCC.VCOInput3Freq_Value=16000000 RCC.VCOInput3Freq_Value=16000000
SH.GPXTI3.0=GPIO_EXTI3 SH.GPXTI3.0=GPIO_EXTI3
SH.GPXTI3.ConfNb=1 SH.GPXTI3.ConfNb=1
@ -511,7 +524,7 @@ SH.S_TIM4_CH1.ConfNb=1
SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2
SH.S_TIM4_CH2.ConfNb=1 SH.S_TIM4_CH2.ConfNb=1
SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 SPI3.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2
SPI3.CalculateBaudRate=500.0 KBits/s SPI3.CalculateBaudRate=40.0 MBits/s
SPI3.Direction=SPI_DIRECTION_2LINES_TXONLY SPI3.Direction=SPI_DIRECTION_2LINES_TXONLY
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler
SPI3.Mode=SPI_MODE_MASTER SPI3.Mode=SPI_MODE_MASTER