Skip to content

Commit 358ea2c

Browse files
committed
DASH: move vehicle CAN to the CAN2 peripheral
The DASH .ioc was switched to CAN2 (PB12/PB13, CAN2 NVIC interrupts, 500 kbps). Complete the migration in firmware so the app actually drives CAN2. feb_can: support CAN2-only boards. Accept hcan1 == NULL (now require only that at least one handle is provided) and guard the hcan1 start/notification path. On STM32F4 the 28 filter banks are owned by CAN1 and HAL_CAN_ConfigFilter() routes all writes to the CAN1 block regardless of handle, and CAN2's MspInit enables the CAN1 clock, so a CAN2-only board configures its banks (14-27) via hcan2. Add feb_can_get_filter_handle() (prefer INSTANCE_1, else INSTANCE_2). No behavior change for boards that set hcan1 (BMS/PCU/LVPDB/UART). DASH: config now .hcan1 = NULL, .hcan2 = &hcan2; all RX/TX moved to FEB_CAN_INSTANCE_2 so RX filters land in CAN2's bank range. README peripheral list updated to CAN2. Manifest updated for the DASH .ioc regen.
1 parent 70544d0 commit 358ea2c

31 files changed

Lines changed: 303 additions & 257 deletions

.cubemx-manifest.json

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"boards": {
55
"BMS": {
66
"ioc_checksum": "80286fd43261cea1eb2d21ef56ffbe570965fc09d3575772c6ddfccd9be45a6d",
7-
"generated_at": "2026-06-13T10:02:41Z",
7+
"generated_at": "2026-06-16T08:51:25Z",
88
"files": {
99
"Core/Inc/FreeRTOSConfig.h": "363755b7a21dd5a790f0bafbfd68f00abe141fd8691720b3604bc84b7dbaa81b",
1010
"Core/Inc/adc.h": "0ac97025a4065f07b7b65a906bd0c45ea800215434ed43c287c1685507f3f612",
@@ -74,11 +74,11 @@
7474
}
7575
},
7676
"DASH": {
77-
"ioc_checksum": "919253252bb89abb628b9105693f93510957783991dc2f4608e8da228a4235ea",
78-
"generated_at": "2026-06-13T10:02:43Z",
77+
"ioc_checksum": "86f30e3c35351fc2b7667a78c5d2a7a46b92ffde5245a73b16097aec5292bf77",
78+
"generated_at": "2026-06-16T08:51:27Z",
7979
"files": {
8080
"Core/Inc/FreeRTOSConfig.h": "692168cbc9c915133ce3f329cec850c5372c1759ec0412ced61fc14741de14be",
81-
"Core/Inc/can.h": "d9c82c8382c196a76d472a6b82a292a0384a086536ca280ce701ebbba9f5c682",
81+
"Core/Inc/can.h": "01d68e4cc9445e207e6ade2905aceff837c3d5ffa3de21c3e55ba908d706531c",
8282
"Core/Inc/crc.h": "31293073b10e7d1c0194f936ec3d19b4b80327aaa9760a5272376d8385aa30f9",
8383
"Core/Inc/dma.h": "7cf6f7450a29d26303cbba5a3ca8c6cb24a02635d6a5ba4d05141fdfc75c4c49",
8484
"Core/Inc/dma2d.h": "5b167fd1971f749b7aa153ba47d410d55e925516b0d2bf9bb972aff761700f6f",
@@ -92,26 +92,26 @@
9292
"Core/Inc/sai.h": "e54adf826d894cd08e880a1f6eaf13ad248b0b84437aa8351eb84af4f48b961f",
9393
"Core/Inc/sdio.h": "0bdaddb21d3b2065647ca83a7de116c7ce666199a9b876feaeba324d761fe1ac",
9494
"Core/Inc/stm32f4xx_hal_conf.h": "94630961834a5e4830a961aa0948a9c793e9d528f75147bbb22bd1dd90081c15",
95-
"Core/Inc/stm32f4xx_it.h": "d418e81ef3abfe8d9a4db034e428754c1a447112910c9ccbb0a1ac83b98ab18d",
95+
"Core/Inc/stm32f4xx_it.h": "cdf862a2e14df9bba02fa8026a426a2122a114775c34374fbce5d4083db6f97b",
9696
"Core/Inc/tim.h": "687f0a84fa12c3709bfe8f4bce41218f258938819a7cc807bdfb6c3a5d565439",
9797
"Core/Inc/usart.h": "de87de73de27ab3fe20d900c746425a53dd578fc64d3427223c6ac25684809c8",
98-
"Core/Src/can.c": "0a1700e52b8e5106862c1b561c506608645c4495b9293f80cb4d3c906b8a1317",
98+
"Core/Src/can.c": "cb2d99c781610063687b92f31ba3fef2edc2a654585bd08936834ca226baeb7b",
9999
"Core/Src/crc.c": "7b2e05fe0def5b67679d31c7a8df4d38ec5acda434d2284f435a20042c07b5eb",
100100
"Core/Src/dma.c": "7df401e55df96897b7c3b34e4769ba9d2083bbb86fce918243a0442d0068d692",
101101
"Core/Src/dma2d.c": "ca63e482a38346407e299ea6a297b46ce28f5eb09a8acb733709f8319e72cfbc",
102102
"Core/Src/dsihost.c": "dff1ff4239d6922b85b7c15830602b359adc0e81f3d8b459c1123a8706b9a3ad",
103103
"Core/Src/fmc.c": "dbe73a64fbad9a97f91d48840259f847c3d3379594eed35927573a000434870f",
104104
"Core/Src/freertos.c": "11f07314633aa9a27dbd5ea834c37ad753f786b85dca3269d63950349697bd87",
105-
"Core/Src/gpio.c": "8da4f0d8e72daddd25430a3c0630047a8bfa8798c307a9db49c91c58f4ff6cc2",
105+
"Core/Src/gpio.c": "19994dd9dee2dbb016c0904751dc4e1fb1987c18a5b01342610763afe44e7f4c",
106106
"Core/Src/i2c.c": "79ed3167015be9d06d2f828464d7ce72f3372b4d63c3ed15f3a32c6f66427381",
107107
"Core/Src/ltdc.c": "448426cef3f409b2b6b9389fa778ecde8f82bb45c46cc9315b72b363c2902d0a",
108-
"Core/Src/main.c": "0c0f721ea0356ef100d809956d91f412c2b16694991a5538b3b12ae5890c97ee",
108+
"Core/Src/main.c": "6ed5366caf26735f8dcd26ddf1a89b51bc5ba4737c83aad7a1900ef2b24c9a3b",
109109
"Core/Src/quadspi.c": "ff4a8b7e31794e4bfdeb2c0731b4f140c6c11179bbe356b32f7125f8cfc910a3",
110110
"Core/Src/sai.c": "6f12831d42f0704927679170ed2c8256d5058a29b5dc2534b0abb00003d09e75",
111111
"Core/Src/sdio.c": "bd9a756f44dd673cbb3755af0a222a7e8c5c4bca7a204fe571fdde43e911337e",
112112
"Core/Src/stm32f4xx_hal_msp.c": "c220f834705b367cec12ff62da970a90769c5ce57259670aac76df5240f1f577",
113113
"Core/Src/stm32f4xx_hal_timebase_tim.c": "b466164af62aa9edce6b63ba955915c0bee9cf1aaf4b9aa70014ff632cf12686",
114-
"Core/Src/stm32f4xx_it.c": "2ca1851bf7e62238b143c143223ec4d5b96cf34bb497bec5eec091c8faf46c09",
114+
"Core/Src/stm32f4xx_it.c": "ef13457bf2286e1838421842801282b6cf678195b497b5a4de44b1a229e224fd",
115115
"Core/Src/syscalls.c": "03c06c72eafb44b499814cf9234aba57dd830f345d9b8779b5d7090e78517600",
116116
"Core/Src/sysmem.c": "ad20f7b1fa1e7c73330727747222cf2ffa3245ebf035230ee9a157545e79df95",
117117
"Core/Src/tim.c": "8a06e4100ca54611f422c200d6d67782903fa2527375bbd0de76cd9baa194a72",
@@ -177,7 +177,7 @@
177177
},
178178
"DART": {
179179
"ioc_checksum": "5e40a62867a13bf2ccbc21a8343b896b2979b658d024cb6721e46e05b32b5a45",
180-
"generated_at": "2026-06-13T10:02:44Z",
180+
"generated_at": "2026-06-16T08:51:28Z",
181181
"files": {
182182
"Core/Inc/can.h": "8bb6621564cd436d9b9697bc86bc4c6f6ae0492b84673344dfa5a3a2d0ee06cb",
183183
"Core/Inc/dma.h": "7cf6f7450a29d26303cbba5a3ca8c6cb24a02635d6a5ba4d05141fdfc75c4c49",
@@ -203,7 +203,7 @@
203203
},
204204
"DCU": {
205205
"ioc_checksum": "3ca0c8e6d3c37e459605b21b9193ba2cfe5a96315c2aa0cf6f560a585e03e01f",
206-
"generated_at": "2026-06-13T10:02:46Z",
206+
"generated_at": "2026-06-16T08:51:30Z",
207207
"files": {
208208
"Core/Inc/FreeRTOSConfig.h": "f664caa84f355ae18d9faf3f04e5f62d8c95d07210511fb284854ae5a426e17e",
209209
"Core/Inc/can.h": "98925d7f4010f054e17d240116244377377c15248a5413a09ff811cdc23084e5",
@@ -289,7 +289,7 @@
289289
},
290290
"DCU_Receiver": {
291291
"ioc_checksum": "ee791e4c6161c1471ae52fb81c2b892a3aab78da6b64e6bf4180ca8c0d88bf66",
292-
"generated_at": "2026-06-13T10:02:47Z",
292+
"generated_at": "2026-06-16T08:51:31Z",
293293
"files": {
294294
"Core/Inc/FreeRTOSConfig.h": "6b4080b1f5aedb3793f3fb347d7bc61907a53df5104d805995aa77085aaafcd4",
295295
"Core/Inc/dma.h": "7cf6f7450a29d26303cbba5a3ca8c6cb24a02635d6a5ba4d05141fdfc75c4c49",
@@ -356,7 +356,7 @@
356356
},
357357
"LVPDB": {
358358
"ioc_checksum": "aad83d2888e50c4498ca882150e6cc94c6266554b55da81220b3a142c5b5e4b2",
359-
"generated_at": "2026-06-13T10:02:47Z",
359+
"generated_at": "2026-06-16T08:51:31Z",
360360
"files": {
361361
"Core/Inc/can.h": "17611aeff90b90e352bc2ace2749644663492ecb10c71539567ef9b1441fd5d9",
362362
"Core/Inc/dma.h": "7cf6f7450a29d26303cbba5a3ca8c6cb24a02635d6a5ba4d05141fdfc75c4c49",
@@ -384,7 +384,7 @@
384384
},
385385
"PCU": {
386386
"ioc_checksum": "3eaf91e0bfa3eca7f8f45868c51a0ac1dcb92b96efaedca982684c948468503b",
387-
"generated_at": "2026-06-13T10:02:48Z",
387+
"generated_at": "2026-06-16T08:51:32Z",
388388
"files": {
389389
"Core/Inc/adc.h": "e36acfe1b822eff1de7e9f93073b8da32c94dd5b09484b716e190c6aa63eb3d0",
390390
"Core/Inc/can.h": "98925d7f4010f054e17d240116244377377c15248a5413a09ff811cdc23084e5",
@@ -414,7 +414,7 @@
414414
},
415415
"Sensor_Nodes": {
416416
"ioc_checksum": "92d075b8d175250a76dee123ca59955032f2ebe8519ffb49e998bb810b3701f2",
417-
"generated_at": "2026-06-13T10:02:49Z",
417+
"generated_at": "2026-06-16T08:51:33Z",
418418
"files": {
419419
"Core/Inc/adc.h": "0ac97025a4065f07b7b65a906bd0c45ea800215434ed43c287c1685507f3f612",
420420
"Core/Inc/can.h": "98925d7f4010f054e17d240116244377377c15248a5413a09ff811cdc23084e5",
@@ -444,7 +444,7 @@
444444
},
445445
"UART": {
446446
"ioc_checksum": "9ff281c674a516d9870dbee5d60587351e97884ecd27127e2d1464987bf16a17",
447-
"generated_at": "2026-06-13T10:02:50Z",
447+
"generated_at": "2026-06-16T08:51:34Z",
448448
"files": {
449449
"Core/Inc/FreeRTOSConfig.h": "2a0e6022391d5ec198a77021ec3bf284583e245f9ce20c420fb7608f638330d6",
450450
"Core/Inc/dma.h": "7cf6f7450a29d26303cbba5a3ca8c6cb24a02635d6a5ba4d05141fdfc75c4c49",
@@ -504,7 +504,7 @@
504504
},
505505
"UART_TEST": {
506506
"ioc_checksum": "06c9618835096e44e3f73cd158bbc2e3fcf76e65dc9a29db68fe607180843efd",
507-
"generated_at": "2026-06-13T10:02:51Z",
507+
"generated_at": "2026-06-16T08:51:35Z",
508508
"files": {
509509
"Core/Inc/FreeRTOSConfig.h": "773dad076864ff18d5d85603d348d4931d29dde9925486e58f95a97ac98b8404",
510510
"Core/Inc/app_freertos.h": "6229601c2ebf192d40ceef377f3c1785571eaf6407f10bc87be5b06357dd3515",

BMS/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.7.21
1+
1.7.22

DART/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.7.6
1+
1.7.7

DASH/Core/Inc/can.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ extern "C" {
3232

3333
/* USER CODE END Includes */
3434

35-
extern CAN_HandleTypeDef hcan1;
35+
extern CAN_HandleTypeDef hcan2;
3636

3737
/* USER CODE BEGIN Private defines */
3838

3939
/* USER CODE END Private defines */
4040

41-
void MX_CAN1_Init(void);
41+
void MX_CAN2_Init(void);
4242

4343
/* USER CODE BEGIN Prototypes */
4444

DASH/Core/Inc/stm32f4xx_it.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ void UsageFault_Handler(void);
5454
void DebugMon_Handler(void);
5555
void DMA1_Stream1_IRQHandler(void);
5656
void DMA1_Stream3_IRQHandler(void);
57-
void CAN1_TX_IRQHandler(void);
58-
void CAN1_RX0_IRQHandler(void);
59-
void CAN1_RX1_IRQHandler(void);
60-
void CAN1_SCE_IRQHandler(void);
6157
void USART3_IRQHandler(void);
6258
void TIM6_DAC_IRQHandler(void);
59+
void CAN2_TX_IRQHandler(void);
60+
void CAN2_RX0_IRQHandler(void);
61+
void CAN2_RX1_IRQHandler(void);
62+
void CAN2_SCE_IRQHandler(void);
6363
void LTDC_IRQHandler(void);
6464
void DMA2D_IRQHandler(void);
6565
void DSI_IRQHandler(void);

DASH/Core/Src/can.c

Lines changed: 65 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -24,105 +24,107 @@
2424

2525
/* USER CODE END 0 */
2626

27-
CAN_HandleTypeDef hcan1;
27+
CAN_HandleTypeDef hcan2;
2828

29-
/* CAN1 init function */
30-
void MX_CAN1_Init(void)
29+
/* CAN2 init function */
30+
void MX_CAN2_Init(void)
3131
{
3232

33-
/* USER CODE BEGIN CAN1_Init 0 */
34-
35-
/* USER CODE END CAN1_Init 0 */
36-
37-
/* USER CODE BEGIN CAN1_Init 1 */
38-
39-
/* USER CODE END CAN1_Init 1 */
40-
hcan1.Instance = CAN1;
41-
hcan1.Init.Prescaler = 18;
42-
hcan1.Init.Mode = CAN_MODE_NORMAL;
43-
hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ;
44-
hcan1.Init.TimeSeg1 = CAN_BS1_3TQ;
45-
hcan1.Init.TimeSeg2 = CAN_BS2_1TQ;
46-
hcan1.Init.TimeTriggeredMode = DISABLE;
47-
hcan1.Init.AutoBusOff = DISABLE;
48-
hcan1.Init.AutoWakeUp = DISABLE;
49-
hcan1.Init.AutoRetransmission = DISABLE;
50-
hcan1.Init.ReceiveFifoLocked = DISABLE;
51-
hcan1.Init.TransmitFifoPriority = DISABLE;
52-
if (HAL_CAN_Init(&hcan1) != HAL_OK)
33+
/* USER CODE BEGIN CAN2_Init 0 */
34+
35+
/* USER CODE END CAN2_Init 0 */
36+
37+
/* USER CODE BEGIN CAN2_Init 1 */
38+
39+
/* USER CODE END CAN2_Init 1 */
40+
hcan2.Instance = CAN2;
41+
hcan2.Init.Prescaler = 18;
42+
hcan2.Init.Mode = CAN_MODE_NORMAL;
43+
hcan2.Init.SyncJumpWidth = CAN_SJW_1TQ;
44+
hcan2.Init.TimeSeg1 = CAN_BS1_3TQ;
45+
hcan2.Init.TimeSeg2 = CAN_BS2_1TQ;
46+
hcan2.Init.TimeTriggeredMode = DISABLE;
47+
hcan2.Init.AutoBusOff = DISABLE;
48+
hcan2.Init.AutoWakeUp = DISABLE;
49+
hcan2.Init.AutoRetransmission = DISABLE;
50+
hcan2.Init.ReceiveFifoLocked = DISABLE;
51+
hcan2.Init.TransmitFifoPriority = DISABLE;
52+
if (HAL_CAN_Init(&hcan2) != HAL_OK)
5353
{
5454
Error_Handler();
5555
}
56-
/* USER CODE BEGIN CAN1_Init 2 */
56+
/* USER CODE BEGIN CAN2_Init 2 */
5757

58-
/* USER CODE END CAN1_Init 2 */
58+
/* USER CODE END CAN2_Init 2 */
5959

6060
}
6161

6262
void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
6363
{
6464

6565
GPIO_InitTypeDef GPIO_InitStruct = {0};
66-
if(canHandle->Instance==CAN1)
66+
if(canHandle->Instance==CAN2)
6767
{
68-
/* USER CODE BEGIN CAN1_MspInit 0 */
68+
/* USER CODE BEGIN CAN2_MspInit 0 */
6969

70-
/* USER CODE END CAN1_MspInit 0 */
71-
/* CAN1 clock enable */
70+
/* USER CODE END CAN2_MspInit 0 */
71+
/* CAN2 clock enable */
72+
__HAL_RCC_CAN2_CLK_ENABLE();
7273
__HAL_RCC_CAN1_CLK_ENABLE();
7374

74-
__HAL_RCC_GPIOA_CLK_ENABLE();
75-
/**CAN1 GPIO Configuration
76-
PA12 ------> CAN1_TX
77-
PA11 ------> CAN1_RX
75+
__HAL_RCC_GPIOB_CLK_ENABLE();
76+
/**CAN2 GPIO Configuration
77+
PB13 ------> CAN2_TX
78+
PB12 ------> CAN2_RX
7879
*/
79-
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11;
80+
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_12;
8081
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
8182
GPIO_InitStruct.Pull = GPIO_NOPULL;
8283
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
83-
GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
84-
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
85-
86-
/* CAN1 interrupt Init */
87-
HAL_NVIC_SetPriority(CAN1_TX_IRQn, 5, 0);
88-
HAL_NVIC_EnableIRQ(CAN1_TX_IRQn);
89-
HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 5, 0);
90-
HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
91-
HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 5, 0);
92-
HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn);
93-
HAL_NVIC_SetPriority(CAN1_SCE_IRQn, 5, 0);
94-
HAL_NVIC_EnableIRQ(CAN1_SCE_IRQn);
95-
/* USER CODE BEGIN CAN1_MspInit 1 */
96-
97-
/* USER CODE END CAN1_MspInit 1 */
84+
GPIO_InitStruct.Alternate = GPIO_AF9_CAN2;
85+
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
86+
87+
/* CAN2 interrupt Init */
88+
HAL_NVIC_SetPriority(CAN2_TX_IRQn, 5, 0);
89+
HAL_NVIC_EnableIRQ(CAN2_TX_IRQn);
90+
HAL_NVIC_SetPriority(CAN2_RX0_IRQn, 5, 0);
91+
HAL_NVIC_EnableIRQ(CAN2_RX0_IRQn);
92+
HAL_NVIC_SetPriority(CAN2_RX1_IRQn, 5, 0);
93+
HAL_NVIC_EnableIRQ(CAN2_RX1_IRQn);
94+
HAL_NVIC_SetPriority(CAN2_SCE_IRQn, 5, 0);
95+
HAL_NVIC_EnableIRQ(CAN2_SCE_IRQn);
96+
/* USER CODE BEGIN CAN2_MspInit 1 */
97+
98+
/* USER CODE END CAN2_MspInit 1 */
9899
}
99100
}
100101

101102
void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
102103
{
103104

104-
if(canHandle->Instance==CAN1)
105+
if(canHandle->Instance==CAN2)
105106
{
106-
/* USER CODE BEGIN CAN1_MspDeInit 0 */
107+
/* USER CODE BEGIN CAN2_MspDeInit 0 */
107108

108-
/* USER CODE END CAN1_MspDeInit 0 */
109+
/* USER CODE END CAN2_MspDeInit 0 */
109110
/* Peripheral clock disable */
111+
__HAL_RCC_CAN2_CLK_DISABLE();
110112
__HAL_RCC_CAN1_CLK_DISABLE();
111113

112-
/**CAN1 GPIO Configuration
113-
PA12 ------> CAN1_TX
114-
PA11 ------> CAN1_RX
114+
/**CAN2 GPIO Configuration
115+
PB13 ------> CAN2_TX
116+
PB12 ------> CAN2_RX
115117
*/
116-
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12|GPIO_PIN_11);
118+
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_12);
117119

118-
/* CAN1 interrupt Deinit */
119-
HAL_NVIC_DisableIRQ(CAN1_TX_IRQn);
120-
HAL_NVIC_DisableIRQ(CAN1_RX0_IRQn);
121-
HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn);
122-
HAL_NVIC_DisableIRQ(CAN1_SCE_IRQn);
123-
/* USER CODE BEGIN CAN1_MspDeInit 1 */
120+
/* CAN2 interrupt Deinit */
121+
HAL_NVIC_DisableIRQ(CAN2_TX_IRQn);
122+
HAL_NVIC_DisableIRQ(CAN2_RX0_IRQn);
123+
HAL_NVIC_DisableIRQ(CAN2_RX1_IRQn);
124+
HAL_NVIC_DisableIRQ(CAN2_SCE_IRQn);
125+
/* USER CODE BEGIN CAN2_MspDeInit 1 */
124126

125-
/* USER CODE END CAN1_MspDeInit 1 */
127+
/* USER CODE END CAN2_MspDeInit 1 */
126128
}
127129
}
128130

DASH/Core/Src/gpio.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
* Output
3939
* EVENT_OUT
4040
* EXTI
41+
PA12 ------> CAN1_TX
42+
PA11 ------> CAN1_RX
4143
*/
4244
void MX_GPIO_Init(void)
4345
{
@@ -91,6 +93,14 @@ void MX_GPIO_Init(void)
9193
GPIO_InitStruct.Pull = GPIO_NOPULL;
9294
HAL_GPIO_Init(OTG_FS1_OverCurrent_GPIO_Port, &GPIO_InitStruct);
9395

96+
/*Configure GPIO pins : PA12 PA11 */
97+
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11;
98+
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
99+
GPIO_InitStruct.Pull = GPIO_NOPULL;
100+
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
101+
GPIO_InitStruct.Alternate = GPIO_AF9_CAN1;
102+
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
103+
94104
/*Configure GPIO pins : PG10 uSD_Detect_Pin */
95105
GPIO_InitStruct.Pin = GPIO_PIN_10|uSD_Detect_Pin;
96106
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

DASH/Core/Src/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ int main(void)
110110
/* Initialize all configured peripherals */
111111
MX_GPIO_Init();
112112
MX_DMA_Init();
113-
MX_CAN1_Init();
114113
MX_CRC_Init();
115114
MX_DMA2D_Init();
116115
MX_DSIHOST_DSI_Init();
@@ -125,6 +124,7 @@ int main(void)
125124
MX_USART3_UART_Init();
126125
MX_USART6_UART_Init();
127126
MX_FATFS_Init();
127+
MX_CAN2_Init();
128128
/* USER CODE BEGIN 2 */
129129

130130
/* USER CODE END 2 */

0 commit comments

Comments
 (0)