CAN bus bringup (everything works except PWM output)
This commit is contained in:
parent
804bb33064
commit
778e0ae272
File diff suppressed because one or more lines are too long
@ -57,6 +57,10 @@ void PendSV_Handler(void);
|
|||||||
void SysTick_Handler(void);
|
void SysTick_Handler(void);
|
||||||
void DMA1_Stream0_IRQHandler(void);
|
void DMA1_Stream0_IRQHandler(void);
|
||||||
void ADC_IRQHandler(void);
|
void ADC_IRQHandler(void);
|
||||||
|
void FDCAN1_IT0_IRQHandler(void);
|
||||||
|
void FDCAN2_IT0_IRQHandler(void);
|
||||||
|
void FDCAN1_IT1_IRQHandler(void);
|
||||||
|
void FDCAN2_IT1_IRQHandler(void);
|
||||||
/* USER CODE BEGIN EFP */
|
/* USER CODE BEGIN EFP */
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
/* USER CODE END EFP */
|
||||||
|
@ -53,9 +53,9 @@ void MX_FDCAN1_Init(void)
|
|||||||
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;
|
||||||
@ -63,7 +63,7 @@ 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 = 4;
|
||||||
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)
|
||||||
@ -101,9 +101,9 @@ void MX_FDCAN2_Init(void)
|
|||||||
hfdcan2.Init.DataTimeSeg1 = 1;
|
hfdcan2.Init.DataTimeSeg1 = 1;
|
||||||
hfdcan2.Init.DataTimeSeg2 = 1;
|
hfdcan2.Init.DataTimeSeg2 = 1;
|
||||||
hfdcan2.Init.MessageRAMOffset = 0;
|
hfdcan2.Init.MessageRAMOffset = 0;
|
||||||
hfdcan2.Init.StdFiltersNbr = 0;
|
hfdcan2.Init.StdFiltersNbr = 1;
|
||||||
hfdcan2.Init.ExtFiltersNbr = 0;
|
hfdcan2.Init.ExtFiltersNbr = 0;
|
||||||
hfdcan2.Init.RxFifo0ElmtsNbr = 0;
|
hfdcan2.Init.RxFifo0ElmtsNbr = 16;
|
||||||
hfdcan2.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
hfdcan2.Init.RxFifo1ElmtsNbr = 0;
|
hfdcan2.Init.RxFifo1ElmtsNbr = 0;
|
||||||
hfdcan2.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
@ -111,7 +111,7 @@ void MX_FDCAN2_Init(void)
|
|||||||
hfdcan2.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
|
||||||
hfdcan2.Init.TxEventsNbr = 0;
|
hfdcan2.Init.TxEventsNbr = 0;
|
||||||
hfdcan2.Init.TxBuffersNbr = 0;
|
hfdcan2.Init.TxBuffersNbr = 0;
|
||||||
hfdcan2.Init.TxFifoQueueElmtsNbr = 0;
|
hfdcan2.Init.TxFifoQueueElmtsNbr = 4;
|
||||||
hfdcan2.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
|
hfdcan2.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
|
||||||
hfdcan2.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
if (HAL_FDCAN_Init(&hfdcan2) != HAL_OK)
|
if (HAL_FDCAN_Init(&hfdcan2) != HAL_OK)
|
||||||
@ -164,6 +164,11 @@ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* fdcanHandle)
|
|||||||
GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1;
|
GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &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 */
|
||||||
@ -201,6 +206,11 @@ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* fdcanHandle)
|
|||||||
GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN2;
|
GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN2;
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* FDCAN2 interrupt Init */
|
||||||
|
HAL_NVIC_SetPriority(FDCAN2_IT0_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(FDCAN2_IT0_IRQn);
|
||||||
|
HAL_NVIC_SetPriority(FDCAN2_IT1_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(FDCAN2_IT1_IRQn);
|
||||||
/* USER CODE BEGIN FDCAN2_MspInit 1 */
|
/* USER CODE BEGIN FDCAN2_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END FDCAN2_MspInit 1 */
|
/* USER CODE END FDCAN2_MspInit 1 */
|
||||||
@ -227,6 +237,9 @@ void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* fdcanHandle)
|
|||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9);
|
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9);
|
||||||
|
|
||||||
|
/* 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 */
|
||||||
@ -248,6 +261,9 @@ void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* fdcanHandle)
|
|||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13);
|
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13);
|
||||||
|
|
||||||
|
/* FDCAN2 interrupt Deinit */
|
||||||
|
HAL_NVIC_DisableIRQ(FDCAN2_IT0_IRQn);
|
||||||
|
HAL_NVIC_DisableIRQ(FDCAN2_IT1_IRQn);
|
||||||
/* USER CODE BEGIN FDCAN2_MspDeInit 1 */
|
/* USER CODE BEGIN FDCAN2_MspDeInit 1 */
|
||||||
|
|
||||||
/* USER CODE END FDCAN2_MspDeInit 1 */
|
/* USER CODE END FDCAN2_MspDeInit 1 */
|
||||||
|
@ -111,6 +111,9 @@ int main(void)
|
|||||||
MX_NVIC_Init();
|
MX_NVIC_Init();
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
|
FDCAN_HandleTypeDef* hMainCAN = &hfdcan2;
|
||||||
|
//FDCAN_HandleTypeDef* hPeriCAN = &hfdcan1;
|
||||||
|
|
||||||
if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
|
if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
|
||||||
@ -133,11 +136,11 @@ int main(void)
|
|||||||
txHeader.TxFrameType = FDCAN_DATA_FRAME;
|
txHeader.TxFrameType = FDCAN_DATA_FRAME;
|
||||||
txHeader.DataLength = 8;
|
txHeader.DataLength = 8;
|
||||||
|
|
||||||
if (HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
|
if (HAL_FDCAN_ActivateNotification(hMainCAN, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0) != HAL_OK)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
|
||||||
if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT,
|
if (HAL_FDCAN_ConfigGlobalFilter(hMainCAN, FDCAN_REJECT, FDCAN_REJECT,
|
||||||
FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE) != HAL_OK)
|
FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE) != HAL_OK)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
|
||||||
FDCAN_FilterTypeDef filter;
|
FDCAN_FilterTypeDef filter;
|
||||||
@ -148,12 +151,22 @@ int main(void)
|
|||||||
filter.FilterID1 = 0x0DD;
|
filter.FilterID1 = 0x0DD;
|
||||||
filter.FilterID2 = 0x7FE; // Match 0x0DC and 0x0DD
|
filter.FilterID2 = 0x7FE; // Match 0x0DC and 0x0DD
|
||||||
|
|
||||||
if (HAL_FDCAN_ConfigFilter(&hfdcan1, &filter) != HAL_OK)
|
if (HAL_FDCAN_ConfigFilter(hMainCAN, &filter) != HAL_OK)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
|
||||||
if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
|
if (HAL_FDCAN_Start(hMainCAN) != HAL_OK)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
|
||||||
|
|
||||||
|
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
|
||||||
|
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
|
||||||
|
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
|
||||||
|
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);
|
||||||
|
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
|
||||||
|
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
|
||||||
|
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
|
||||||
|
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
|
||||||
|
|
||||||
/* USER CODE END 2 */
|
/* USER CODE END 2 */
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
@ -174,6 +187,9 @@ int main(void)
|
|||||||
|
|
||||||
can_pkt_t* pktinfo = &(CAN_SIGNAL_MAP[pi]);
|
can_pkt_t* pktinfo = &(CAN_SIGNAL_MAP[pi]);
|
||||||
|
|
||||||
|
if (pktinfo->num_signals < 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (mscounter % pktinfo->period == 0) {
|
if (mscounter % pktinfo->period == 0) {
|
||||||
|
|
||||||
txHeader.Identifier = pktinfo->can_id;
|
txHeader.Identifier = pktinfo->can_id;
|
||||||
@ -206,7 +222,7 @@ int main(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &txHeader, (uint8_t*) &txData) != HAL_OK)
|
if (HAL_FDCAN_AddMessageToTxFifoQ(hMainCAN, &txHeader, (uint8_t*) &txData) != HAL_OK)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -312,12 +328,15 @@ void SetCCR(TIM_TypeDef* Instance, unsigned int ch, uint8_t dc) {
|
|||||||
|
|
||||||
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *handle, uint32_t RxFifo0ITs)
|
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *handle, uint32_t RxFifo0ITs)
|
||||||
{
|
{
|
||||||
if (handle != &hfdcan1 || (RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) == RESET)
|
FDCAN_HandleTypeDef* hMainCAN = &hfdcan2;
|
||||||
return;
|
//FDCAN_HandleTypeDef* hPeriCAN = &hfdcan1;
|
||||||
|
|
||||||
|
if (handle != hMainCAN || (RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) == RESET)
|
||||||
|
return; // TODO: handle Peripheral CAN
|
||||||
|
|
||||||
static FDCAN_RxHeaderTypeDef header;
|
static FDCAN_RxHeaderTypeDef header;
|
||||||
static uint8_t data[8];
|
static uint8_t data[8];
|
||||||
if (HAL_FDCAN_GetRxMessage(&hfdcan1, FDCAN_RX_FIFO0, &header, data) != HAL_OK)
|
if (HAL_FDCAN_GetRxMessage(hMainCAN, FDCAN_RX_FIFO0, &header, data) != HAL_OK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (header.FDFormat != FDCAN_CLASSIC_CAN ||
|
if (header.FDFormat != FDCAN_CLASSIC_CAN ||
|
||||||
@ -326,26 +345,39 @@ void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *handle, uint32_t RxFifo0ITs)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
switch (header.Identifier) {
|
switch (header.Identifier) {
|
||||||
|
|
||||||
case CAN_PWM_DC_ID:
|
case CAN_PWM_DC_ID:
|
||||||
|
|
||||||
uint8_t* dcs = data;
|
uint8_t* dcs = data;
|
||||||
for (int i = 0; i < header.DataLength; i++) {
|
for (int i = 0; i < header.DataLength; i++) {
|
||||||
|
|
||||||
TIM_HandleTypeDef* htim = PWM_TIM_MAP[PWM_CH_MAP[i].tim];
|
TIM_HandleTypeDef* htim = PWM_TIM_MAP[PWM_CH_MAP[i].tim];
|
||||||
SetCCR(htim->Instance, PWM_CH_MAP[i].ch, dcs[i]);
|
SetCCR(htim->Instance, PWM_CH_MAP[i].ch, dcs[i]);
|
||||||
|
// TODO: This does not work, apparently they don't start in RESET
|
||||||
|
// Maybe have our own init bool array instead
|
||||||
|
// Manually enabling doesn't seem to work either
|
||||||
if (htim->ChannelState[PWM_CH_MAP[i].ch] == HAL_TIM_CHANNEL_STATE_RESET)
|
if (htim->ChannelState[PWM_CH_MAP[i].ch] == HAL_TIM_CHANNEL_STATE_RESET)
|
||||||
HAL_TIM_PWM_Start(htim, PWM_CH_MAP[i].ch << 2);
|
HAL_TIM_PWM_Start(htim, PWM_CH_MAP[i].ch << 2);
|
||||||
// MAYBE: Stop Timer when DC == 0 on all channels?
|
// MAYBE: Stop Timer when DC == 0 on all channels?
|
||||||
// HAL_TIM_PWM_Stop(htim, channel);
|
// HAL_TIM_PWM_Stop(htim, channel);
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAN_PWM_CONF_ID:
|
case CAN_PWM_CONF_ID:
|
||||||
|
|
||||||
uint16_t* freqs = (uint16_t*) data;
|
uint16_t* freqs = (uint16_t*) data;
|
||||||
for (int i = 0; i < (header.DataLength/2); i++) {
|
for (int i = 0; i < (header.DataLength/2); i++) {
|
||||||
|
|
||||||
uint32_t prescaler = (TIM_BASE_FREQ / (255UL * freqs[i])); // cast?
|
uint32_t prescaler = (TIM_BASE_FREQ / (255UL * freqs[i])); // cast?
|
||||||
PWM_TIM_MAP[i]->Instance->PSC = prescaler;
|
PWM_TIM_MAP[i]->Instance->PSC = prescaler;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,8 @@
|
|||||||
/* External variables --------------------------------------------------------*/
|
/* External variables --------------------------------------------------------*/
|
||||||
extern DMA_HandleTypeDef hdma_adc1;
|
extern DMA_HandleTypeDef hdma_adc1;
|
||||||
extern ADC_HandleTypeDef hadc1;
|
extern ADC_HandleTypeDef hadc1;
|
||||||
|
extern FDCAN_HandleTypeDef hfdcan1;
|
||||||
|
extern FDCAN_HandleTypeDef hfdcan2;
|
||||||
/* USER CODE BEGIN EV */
|
/* USER CODE BEGIN EV */
|
||||||
|
|
||||||
/* USER CODE END EV */
|
/* USER CODE END EV */
|
||||||
@ -227,6 +229,62 @@ void ADC_IRQHandler(void)
|
|||||||
/* USER CODE END ADC_IRQn 1 */
|
/* USER CODE END ADC_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 FDCAN2 interrupt 0.
|
||||||
|
*/
|
||||||
|
void FDCAN2_IT0_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN FDCAN2_IT0_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END FDCAN2_IT0_IRQn 0 */
|
||||||
|
HAL_FDCAN_IRQHandler(&hfdcan2);
|
||||||
|
/* USER CODE BEGIN FDCAN2_IT0_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END FDCAN2_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 FDCAN2 interrupt 1.
|
||||||
|
*/
|
||||||
|
void FDCAN2_IT1_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN FDCAN2_IT1_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END FDCAN2_IT1_IRQn 0 */
|
||||||
|
HAL_FDCAN_IRQHandler(&hfdcan2);
|
||||||
|
/* USER CODE BEGIN FDCAN2_IT1_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END FDCAN2_IT1_IRQn 1 */
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
@ -46,9 +46,9 @@ void MX_TIM1_Init(void)
|
|||||||
|
|
||||||
/* USER CODE END TIM1_Init 1 */
|
/* USER CODE END TIM1_Init 1 */
|
||||||
htim1.Instance = TIM1;
|
htim1.Instance = TIM1;
|
||||||
htim1.Init.Prescaler = 0;
|
htim1.Init.Prescaler = 753;
|
||||||
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim1.Init.Period = 65535;
|
htim1.Init.Period = 255;
|
||||||
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
htim1.Init.RepetitionCounter = 0;
|
htim1.Init.RepetitionCounter = 0;
|
||||||
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
@ -122,9 +122,9 @@ void MX_TIM3_Init(void)
|
|||||||
|
|
||||||
/* USER CODE END TIM3_Init 1 */
|
/* USER CODE END TIM3_Init 1 */
|
||||||
htim3.Instance = TIM3;
|
htim3.Instance = TIM3;
|
||||||
htim3.Init.Prescaler = 0;
|
htim3.Init.Prescaler = 1203;
|
||||||
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim3.Init.Period = 65535;
|
htim3.Init.Period = 255;
|
||||||
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
|
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
|
||||||
@ -170,9 +170,9 @@ void MX_TIM4_Init(void)
|
|||||||
|
|
||||||
/* USER CODE END TIM4_Init 1 */
|
/* USER CODE END TIM4_Init 1 */
|
||||||
htim4.Instance = TIM4;
|
htim4.Instance = TIM4;
|
||||||
htim4.Init.Prescaler = 0;
|
htim4.Init.Prescaler = 19;
|
||||||
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim4.Init.Period = 65535;
|
htim4.Init.Period = 255;
|
||||||
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
||||||
|
@ -127,17 +127,23 @@ Dma.RequestsNb=1
|
|||||||
FDCAN1.CalculateBaudRateNominal=500000
|
FDCAN1.CalculateBaudRateNominal=500000
|
||||||
FDCAN1.CalculateTimeBitNominal=2000
|
FDCAN1.CalculateTimeBitNominal=2000
|
||||||
FDCAN1.CalculateTimeQuantumNominal=125.0
|
FDCAN1.CalculateTimeQuantumNominal=125.0
|
||||||
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2
|
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,RxFifo0ElmtsNbr,StdFiltersNbr,TxFifoQueueElmtsNbr
|
||||||
FDCAN1.NominalPrescaler=3
|
FDCAN1.NominalPrescaler=3
|
||||||
FDCAN1.NominalTimeSeg1=13
|
FDCAN1.NominalTimeSeg1=13
|
||||||
FDCAN1.NominalTimeSeg2=2
|
FDCAN1.NominalTimeSeg2=2
|
||||||
|
FDCAN1.RxFifo0ElmtsNbr=16
|
||||||
|
FDCAN1.StdFiltersNbr=1
|
||||||
|
FDCAN1.TxFifoQueueElmtsNbr=4
|
||||||
FDCAN2.CalculateBaudRateNominal=500000
|
FDCAN2.CalculateBaudRateNominal=500000
|
||||||
FDCAN2.CalculateTimeBitNominal=2000
|
FDCAN2.CalculateTimeBitNominal=2000
|
||||||
FDCAN2.CalculateTimeQuantumNominal=125.0
|
FDCAN2.CalculateTimeQuantumNominal=125.0
|
||||||
FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2
|
FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,StdFiltersNbr,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr
|
||||||
FDCAN2.NominalPrescaler=3
|
FDCAN2.NominalPrescaler=3
|
||||||
FDCAN2.NominalTimeSeg1=13
|
FDCAN2.NominalTimeSeg1=13
|
||||||
FDCAN2.NominalTimeSeg2=2
|
FDCAN2.NominalTimeSeg2=2
|
||||||
|
FDCAN2.RxFifo0ElmtsNbr=16
|
||||||
|
FDCAN2.StdFiltersNbr=1
|
||||||
|
FDCAN2.TxFifoQueueElmtsNbr=4
|
||||||
File.Version=6
|
File.Version=6
|
||||||
GPIO.groupedBy=Group By Peripherals
|
GPIO.groupedBy=Group By Peripherals
|
||||||
KeepUserPlacement=false
|
KeepUserPlacement=false
|
||||||
@ -258,6 +264,10 @@ NVIC.ADC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|||||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:true\:true\:1\:false\:true\:true
|
NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:true\:true\:1\:false\:true\:true
|
||||||
NVIC.DebugMonitor_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.FDCAN2_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
|
NVIC.FDCAN2_IT1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.ForceEnableDMAVector=true
|
NVIC.ForceEnableDMAVector=true
|
||||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
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.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user