Skip to main content
rclar.6
Associate III
July 28, 2025
Question

CAN alternate functions *NOT* configured in stm32IDE

  • July 28, 2025
  • 5 replies
  • 600 views

Trouble Report: STM32G474 FD CAN RX Interrupt Causes HardFault Due to VTOR Left at 0x00000000

Platform Details
----------------
- Microcontroller: STM32G474VETx
- IDE: STM32CubeIDE
- Version: 1.16.0
- Build: 21983_20240628_1741
- Startup project: Standard CubeMX-generated application with FDCAN peripheral using interrupt-based RX
- RTOS: None (bare metal)
- Debugger: ST-LINK / OpenOCD

Problem Summary

===============

Using the CUBEMX tool I have used the alternate pins FDCAN3_RX to PA8 and FDCAN3_TX to PA15.

The GPIO init is pasted below. It fails to configure PA8 and PA15. Have I misunderstod something here? Is it set anywhere else?

/**
 * @brief GPIO Initialization Function
 * 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_GPIOE_CLK_ENABLE();
 __HAL_RCC_GPIOF_CLK_ENABLE();
 __HAL_RCC_GPIOC_CLK_ENABLE();
 __HAL_RCC_GPIOA_CLK_ENABLE();
 __HAL_RCC_GPIOB_CLK_ENABLE();
 __HAL_RCC_GPIOD_CLK_ENABLE();

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
 |GPIO_PIN_6|GPIO_PIN_12, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_5
 |GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
 |GPIO_PIN_13|GPIO_PIN_7, GPIO_PIN_RESET);

 /*Configure GPIO pins : PE2 PE3 PE4 PE5
 PE6 PE12 */
 GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
 |GPIO_PIN_6|GPIO_PIN_12;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

 /*Configure GPIO pin : PC2 */
 GPIO_InitStruct.Pin = GPIO_PIN_2;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

 /*Configure GPIO pin : PA4 */
 GPIO_InitStruct.Pin = GPIO_PIN_4;
 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);

 /*Configure GPIO pins : PB12 PB13 PB14 PB5
 PB6 PB7 */
 GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_5
 |GPIO_PIN_6|GPIO_PIN_7;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

 /*Configure GPIO pins : PD8 PD9 PD10 PD11
 PD13 PD7 */
 GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
 |GPIO_PIN_13|GPIO_PIN_7;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

/* USER CODE BEGIN MX_GPIO_Init_2 */


 // CUBE MX YOU HAVE MISSED THIS!!!!! 28JUL2028

/* Configure GPIO pin : PA8
 GPIO_InitStruct.Pin = GPIO_PIN_8;
 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 GPIO_InitStruct.Alternate = 9; // GPIO_AF9_FDCAN3;

 Configure GPIO pin : PA15
 GPIO_InitStruct.Pin = GPIO_PIN_15;
 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 GPIO_InitStruct.Alternate = 9; // GPIO_AF9_FDCAN3;



 Configure GPIO pin : PA4
 GPIO_InitStruct.Pin = GPIO_PIN_4;
 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 END MX_GPIO_Init_2 */
}

 

 

 

 

5 replies

rclar.6
rclar.6Author
Associate III
July 28, 2025

Also the define 

"GPIO_AF9_FDCAN3"

 

Is not found. Its almost like the CubeMX/code~generation is utterly ignoring the alternate functions

that are presented in the GUI

TDK
Super User
July 28, 2025

They are initialized in the HAL_CAN_MspInit function.

Include your IOC if you're having issues.

 

VTOR is left at default. If you want it set, undefine the USER_VECT_TAB_ADDRESS define in the system_*.c file.

"If you feel a post has answered your question, please click ""Accept as Solution""."
rclar.6
rclar.6Author
Associate III
July 29, 2025
#MicroXplorer Configuration settings - do not modify
ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV8
ADC1.CommonPathInternal=null|null|null|null
ADC1.ContinuousConvMode=ENABLE
ADC1.DMAAccessModeView=ENABLE
ADC1.DMAContinuousRequests=DISABLE
ADC1.EOCSelection=ADC_EOC_SEQ_CONV
ADC1.EnableAnalogWatchDog3=false
ADC1.EnableRegularConversion=ENABLE
ADC1.ExternalTrigConv=ADC_EXTERNALTRIG_HRTIM_TRG8
ADC1.IPParameters=EnableRegularConversion,Mode,DMAAccessModeView,DMAContinuousRequests,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,NbrOfConversionFlag,ExternalTrigConv,NbrOfConversion,EnableAnalogWatchDog3,Overrun,ContinuousConvMode,EOCSelection,TwoSamplingDelay,ClockPrescaler,master,CommonPathInternal
ADC1.Mode=ADC_DUALMODE_REGSIMULT
ADC1.NbrOfConversion=1
ADC1.NbrOfConversionFlag=1
ADC1.OffsetNumber-3\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC1.Overrun=ADC_OVR_DATA_OVERWRITTEN
ADC1.Rank-3\#ChannelRegularConversion=1
ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
ADC1.TwoSamplingDelay=ADC_TWOSAMPLINGDELAY_4CYCLES
ADC1.master=1
ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV8
ADC2.CommonPathInternal=null|null|null|null
ADC2.DMAAccessModeView=ENABLE
ADC2.EOCSelection=ADC_EOC_SEQ_CONV
ADC2.EnableRegularConversion=DISABLE
ADC2.IPParameters=EnableRegularConversion,Mode,DMAAccessModeView,EOCSelection,TwoSamplingDelay,Overrun,ClockPrescaler,CommonPathInternal
ADC2.Mode=ADC_DUALMODE_REGSIMULT
ADC2.Overrun=ADC_OVR_DATA_OVERWRITTEN
ADC2.TwoSamplingDelay=ADC_TWOSAMPLINGDELAY_4CYCLES
CAD.formats=
CAD.pinconfig=
CAD.provider=
CRC.IPParameters=InputDataFormat,InputDataInversionMode,OutputDataInversionMode
CRC.InputDataFormat=CRC_INPUTDATA_FORMAT_WORDS
CRC.InputDataInversionMode=CRC_INPUTDATA_INVERSION_NONE
CRC.OutputDataInversionMode=CRC_OUTPUTDATA_INVERSION_DISABLE
DAC1.DAC_Channel-DAC_OUT2=DAC_CHANNEL_2
DAC1.IPParameters=DAC_Channel-DAC_OUT2
DAC3.DAC_Channel-DAC_OUT2_Int=DAC_CHANNEL_2
DAC3.IPParameters=DAC_Channel-DAC_OUT2_Int
FDCAN1.CalculateBaudRateNominal=100000
FDCAN1.CalculateTimeBitNominal=10000
FDCAN1.CalculateTimeQuantumNominal=1000.0
FDCAN1.ClockDivider=FDCAN_CLOCK_DIV8
FDCAN1.DataSyncJumpWidth=4
FDCAN1.DataTimeSeg1=6
FDCAN1.DataTimeSeg2=5
FDCAN1.ExtFiltersNbr=4
FDCAN1.FrameFormat=FDCAN_FRAME_CLASSIC
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,ClockDivider,DataSyncJumpWidth,DataTimeSeg1,DataTimeSeg2,NominalTimeSeg1,NominalTimeSeg2,NominalSyncJumpWidth,FrameFormat,ExtFiltersNbr,StdFiltersNbr
FDCAN1.NominalPrescaler=21
FDCAN1.NominalSyncJumpWidth=128
FDCAN1.NominalTimeSeg1=6
FDCAN1.NominalTimeSeg2=3
FDCAN1.StdFiltersNbr=4
FDCAN3.CalculateBaudRateNominal=2000000
FDCAN3.CalculateTimeBitNominal=500
FDCAN3.CalculateTimeQuantumNominal=35.714285714285715
FDCAN3.DataSyncJumpWidth=4
FDCAN3.DataTimeSeg1=12
FDCAN3.DataTimeSeg2=3
FDCAN3.ExtFiltersNbr=4
FDCAN3.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,ExtFiltersNbr,DataTimeSeg1,DataTimeSeg2,DataSyncJumpWidth,NominalSyncJumpWidth,StdFiltersNbr,Mode
FDCAN3.Mode=FDCAN_MODE_BUS_MONITORING
FDCAN3.NominalPrescaler=6
FDCAN3.NominalSyncJumpWidth=4
FDCAN3.NominalTimeSeg1=10
FDCAN3.NominalTimeSeg2=3
FDCAN3.StdFiltersNbr=4
File.Version=6
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32G474VET3
Mcu.Family=STM32G4
Mcu.IP0=ADC1
Mcu.IP1=ADC2
Mcu.IP10=SPI1
Mcu.IP11=SYS
Mcu.IP12=TIM3
Mcu.IP13=TIM6
Mcu.IP14=TIM8
Mcu.IP15=TIM15
Mcu.IP16=USART1
Mcu.IP17=USART2
Mcu.IP18=USART3
Mcu.IP19=USB
Mcu.IP2=CRC
Mcu.IP3=DAC1
Mcu.IP4=DAC3
Mcu.IP5=FDCAN1
Mcu.IP6=FDCAN3
Mcu.IP7=NVIC
Mcu.IP8=OPAMP3
Mcu.IP9=RCC
Mcu.IPNb=20
Mcu.Name=STM32G474V(B-C-E)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
Mcu.Pin1=PE3
Mcu.Pin10=PA0
Mcu.Pin11=PA1
Mcu.Pin12=PA2
Mcu.Pin13=PA3
Mcu.Pin14=PA4
Mcu.Pin15=PA5
Mcu.Pin16=PA6
Mcu.Pin17=PA7
Mcu.Pin18=PC5
Mcu.Pin19=PB0
Mcu.Pin2=PE4
Mcu.Pin20=PB1
Mcu.Pin21=PE12
Mcu.Pin22=PB11
Mcu.Pin23=PB12
Mcu.Pin24=PB13
Mcu.Pin25=PB14
Mcu.Pin26=PB15
Mcu.Pin27=PD8
Mcu.Pin28=PD9
Mcu.Pin29=PD10
Mcu.Pin3=PE5
Mcu.Pin30=PD11
Mcu.Pin31=PD12
Mcu.Pin32=PD13
Mcu.Pin33=PA8
Mcu.Pin34=PA9
Mcu.Pin35=PA10
Mcu.Pin36=PA11
Mcu.Pin37=PA12
Mcu.Pin38=PA13
Mcu.Pin39=PA14
Mcu.Pin4=PE6
Mcu.Pin40=PA15
Mcu.Pin41=PC10
Mcu.Pin42=PC11
Mcu.Pin43=PD0
Mcu.Pin44=PD5
Mcu.Pin45=PD7
Mcu.Pin46=PB3
Mcu.Pin47=PB4
Mcu.Pin48=PB5
Mcu.Pin49=PB6
Mcu.Pin5=PF0-OSC_IN
Mcu.Pin50=PB7
Mcu.Pin51=PB9
Mcu.Pin52=VP_CRC_VS_CRC
Mcu.Pin53=VP_DAC3_VS_DACI2
Mcu.Pin54=VP_SYS_VS_Systick
Mcu.Pin55=VP_SYS_VS_DBSignals
Mcu.Pin56=VP_TIM3_VS_ClockSourceINT
Mcu.Pin57=VP_TIM6_VS_ClockSourceINT
Mcu.Pin58=VP_TIM8_VS_ClockSourceINT
Mcu.Pin59=VP_TIM15_VS_ClockSourceINT
Mcu.Pin6=PF1-OSC_OUT
Mcu.Pin7=PC0
Mcu.Pin8=PC2
Mcu.Pin9=PC3
Mcu.PinsNb=60
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32G474VETx
MxCube.Version=6.12.0
MxDb.Version=DB.6.0.120
NVIC.ADC1_2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.FDCAN1_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.FDCAN1_IT1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA0.Mode=IN1-Single-Ended
PA0.Signal=ADC1_IN1
PA1.Mode=IN2-Single-Ended
PA1.Signal=ADC2_IN2
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
PA11.Mode=Device
PA11.Signal=USB_DM
PA12.Locked=true
PA12.Mode=Device
PA12.Signal=USB_DP
PA13.Mode=Serial_Wire
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
PA15.Mode=FDCAN_Activate
PA15.Signal=FDCAN3_TX
PA2.Mode=IN3-Single-Ended
PA2.Signal=ADC1_IN3
PA3.Mode=Asynchronous
PA3.Signal=USART2_RX
PA4.Locked=true
PA4.Signal=GPIO_Output
PA5.Signal=COMP_DAC12_group
PA6.Mode=IN3-Single-Ended
PA6.Signal=ADC2_IN3
PA7.Mode=Full_Duplex_Master
PA7.Signal=SPI1_MOSI
PA8.Mode=FDCAN_Activate
PA8.Signal=FDCAN3_RX
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PB0.Mode=IN15-Single-Ended
PB0.Signal=ADC1_IN15
PB1.Mode=Follower-DAC_OUT2-INP
PB1.Signal=OPAMP3_VOUT
PB11.Mode=IN14-Single-Ended
PB11.Signal=ADC2_IN14
PB12.Locked=true
PB12.Signal=GPIO_Output
PB13.Locked=true
PB13.Signal=GPIO_Output
PB14.Locked=true
PB14.Signal=GPIO_Output
PB15.Mode=IN15-Single-Ended
PB15.Signal=ADC2_IN15
PB3.Mode=Full_Duplex_Master
PB3.Signal=SPI1_SCK
PB4.Mode=Full_Duplex_Master
PB4.Signal=SPI1_MISO
PB5.Locked=true
PB5.Signal=GPIO_Output
PB6.Locked=true
PB6.Signal=GPIO_Output
PB7.Locked=true
PB7.Signal=GPIO_Output
PB9.Locked=true
PB9.Mode=FDCAN_Activate
PB9.Signal=FDCAN1_TX
PC0.Mode=IN6-Single-Ended
PC0.Signal=ADC1_IN6
PC10.Locked=true
PC10.Mode=Asynchronous
PC10.Signal=USART3_TX
PC11.Locked=true
PC11.Mode=Asynchronous
PC11.Signal=USART3_RX
PC2.Locked=true
PC2.Signal=GPIO_Output
PC3.Mode=IN9-Single-Ended
PC3.Signal=ADC2_IN9
PC5.Mode=IN11-Single-Ended
PC5.Signal=ADC2_IN11
PD0.Locked=true
PD0.Mode=FDCAN_Activate
PD0.Signal=FDCAN1_RX
PD10.Locked=true
PD10.Signal=GPIO_Output
PD11.Locked=true
PD11.Signal=GPIO_Output
PD12.Locked=true
PD12.Signal=USART3_DE
PD13.Locked=true
PD13.Signal=GPIO_Output
PD5.Mode=Asynchronous
PD5.Signal=USART2_TX
PD7.Locked=true
PD7.Signal=GPIO_Output
PD8.Locked=true
PD8.Signal=GPIO_Output
PD9.Locked=true
PD9.Signal=GPIO_Output
PE12.Locked=true
PE12.Signal=GPIO_Output
PE2.Locked=true
PE2.Signal=GPIO_Output
PE3.Locked=true
PE3.Signal=GPIO_Output
PE4.Locked=true
PE4.Signal=GPIO_Output
PE5.Locked=true
PE5.Signal=GPIO_Output
PE6.Locked=true
PE6.Signal=GPIO_Output
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=STM32G474VETx
ProjectManager.FirmwarePackage=STM32Cube FW_G4 V1.6.1
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=STM32CubeIDE
ProjectManager.ProjectBuild=false
ProjectManager.ProjectFileName=NOX_OS_CO_development_board.ioc
ProjectManager.ProjectName=NOX_OS_CO_development_board
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_ADC1_Init-ADC1-false-HAL-true,4-MX_TIM6_Init-TIM6-false-HAL-true,5-MX_ADC2_Init-ADC2-false-HAL-true,6-MX_OPAMP3_Init-OPAMP3-false-HAL-true,7-MX_DAC3_Init-DAC3-false-HAL-true,8-MX_FDCAN1_Init-FDCAN1-false-HAL-true,9-MX_TIM8_Init-TIM8-false-HAL-true,10-MX_TIM3_Init-TIM3-false-HAL-true,11-MX_USART1_UART_Init-USART1-false-HAL-true,12-MX_CRC_Init-CRC-false-HAL-true,13-MX_TIM15_Init-TIM15-false-HAL-true,14-MX_USART3_UART_Init-USART3-false-HAL-true,15-MX_SPI1_Init-SPI1-false-HAL-true,16-MX_DAC1_Init-DAC1-false-HAL-true,17-MX_USART2_UART_Init-USART2-false-HAL-true,18-MX_USB_PCD_Init-USB-false-HAL-true,19-MX_FDCAN3_Init-FDCAN3-false-HAL-true
RCC.ADC12Freq_Value=168000000
RCC.ADC345Freq_Value=168000000
RCC.AHBFreq_Value=168000000
RCC.APB1Freq_Value=168000000
RCC.APB1TimFreq_Value=168000000
RCC.APB2Freq_Value=168000000
RCC.APB2TimFreq_Value=168000000
RCC.CK48CLockSelection=RCC_USBCLKSOURCE_HSI48
RCC.CRSFreq_Value=48000000
RCC.CortexFreq_Value=168000000
RCC.EXTERNAL_CLOCK_VALUE=12288000
RCC.FCLKCortexFreq_Value=168000000
RCC.FDCANFreq_Value=168000000
RCC.FamilyName=M
RCC.HCLKFreq_Value=168000000
RCC.HRTIM1Freq_Value=168000000
RCC.HSE_VALUE=24000000
RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=168000000
RCC.I2C2Freq_Value=168000000
RCC.I2C3Freq_Value=168000000
RCC.I2C4Freq_Value=168000000
RCC.I2SFreq_Value=168000000
RCC.IPParameters=ADC12Freq_Value,ADC345Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CK48CLockSelection,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HRTIM1Freq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLM,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,QSPIFreq_Value,RNGFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
RCC.LPTIM1Freq_Value=168000000
RCC.LPUART1Freq_Value=168000000
RCC.LSCOPinFreq_Value=32000
RCC.LSE_VALUE=32768
RCC.LSI_VALUE=32000
RCC.MCO1PinFreq_Value=16000000
RCC.PLLM=RCC_PLLM_DIV2
RCC.PLLN=28
RCC.PLLPoutputFreq_Value=168000000
RCC.PLLQoutputFreq_Value=168000000
RCC.PLLRCLKFreq_Value=168000000
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
RCC.PWRFreq_Value=168000000
RCC.QSPIFreq_Value=168000000
RCC.RNGFreq_Value=48000000
RCC.SAI1Freq_Value=168000000
RCC.SYSCLKFreq_VALUE=168000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.UART4Freq_Value=168000000
RCC.UART5Freq_Value=168000000
RCC.USART1Freq_Value=168000000
RCC.USART2Freq_Value=168000000
RCC.USART3Freq_Value=168000000
RCC.USBFreq_Value=48000000
RCC.VCOInputFreq_Value=12000000
RCC.VCOOutputFreq_Value=336000000
SH.COMP_DAC12_group.0=DAC1_OUT2,DAC_OUT2
SH.COMP_DAC12_group.ConfNb=1
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
SPI1.CLKPolarity=SPI_POLARITY_LOW
SPI1.CalculateBaudRate=2.625 MBits/s
SPI1.DataSize=SPI_DATASIZE_8BIT
SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate,DataSize,CLKPolarity
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualType=VM_MASTER
TIM15.IPParameters=Prescaler
TIM15.Prescaler=168-1
TIM3.CounterMode=TIM_COUNTERMODE_DOWN
TIM3.IPParameters=Prescaler,PeriodNoDither,TIM_MasterOutputTrigger,CounterMode
TIM3.PeriodNoDither=2-1
TIM3.Prescaler=84-1
TIM3.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE
TIM6.IPParameters=TIM_MasterOutputTrigger,Prescaler,PeriodNoDither
TIM6.PeriodNoDither=20-1
TIM6.Prescaler=420-1
TIM6.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE
TIM8.IPParameters=PeriodNoDither,Prescaler,TIM_MasterOutputTrigger
TIM8.PeriodNoDither=168-1
TIM8.Prescaler=10-1
TIM8.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE
USART1.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485)
USART1.VirtualMode-Asynchronous=VM_ASYNC
USART1.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
USART2.IPParameters=VirtualMode-Asynchronous
USART2.VirtualMode-Asynchronous=VM_ASYNC
USART3.BaudRate=115200
USART3.DataInvertParam=ADVFEATURE_DATAINV_DISABLE
USART3.IPParameters=VirtualMode-Asynchronous,DataInvertParam,BaudRate,TxPinLevelInvertParam,RxPinLevelInvertParam
USART3.RxPinLevelInvertParam=ADVFEATURE_RXINV_DISABLE
USART3.TxPinLevelInvertParam=ADVFEATURE_TXINV_DISABLE
USART3.VirtualMode-Asynchronous=VM_ASYNC
VP_CRC_VS_CRC.Mode=CRC_Activate
VP_CRC_VS_CRC.Signal=CRC_VS_CRC
VP_DAC3_VS_DACI2.Mode=DAC_OUT2_Int
VP_DAC3_VS_DACI2.Signal=DAC3_VS_DACI2
VP_SYS_VS_DBSignals.Mode=DisableDeadBatterySignals
VP_SYS_VS_DBSignals.Signal=SYS_VS_DBSignals
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM15_VS_ClockSourceINT.Mode=Internal
VP_TIM15_VS_ClockSourceINT.Signal=TIM15_VS_ClockSourceINT
VP_TIM3_VS_ClockSourceINT.Mode=Internal
VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT
VP_TIM8_VS_ClockSourceINT.Mode=Internal
VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT
board=custom
isbadioc=false
TDK
Super User
July 29, 2025

Pins are initialized in HAL_FDCAN_MspInit, as expected.

TDK_0-1753795110825.png

 

"If you feel a post has answered your question, please click ""Accept as Solution""."
TDK
Super User
July 29, 2025

Why do you think AF9 is correct for these pins? It should be AF11.

TDK_0-1753795286114.png

 

"If you feel a post has answered your question, please click ""Accept as Solution""."
rclar.6
rclar.6Author
Associate III
July 29, 2025
Because AF9 works and I am able to send CAN and receive can with 9.
With 11 in as alternate function it does not work.
I am using an STM32G474VETx