working transmit data

This commit is contained in:
2025-06-25 12:33:26 -07:00
parent 886ecf1778
commit 7235900cac
6 changed files with 83 additions and 66 deletions

View File

@@ -38,11 +38,11 @@ void MX_CAN_Init(void)
/* USER CODE END CAN_Init 1 */
hcan.Instance = CAN1;
hcan.Init.Prescaler = 15;
hcan.Init.Prescaler = 18;
hcan.Init.Mode = CAN_MODE_NORMAL;
hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
hcan.Init.TimeSeg1 = CAN_BS1_1TQ;
hcan.Init.TimeSeg2 = CAN_BS2_1TQ;
hcan.Init.TimeSeg1 = CAN_BS1_13TQ;
hcan.Init.TimeSeg2 = CAN_BS2_2TQ;
hcan.Init.TimeTriggeredMode = DISABLE;
hcan.Init.AutoBusOff = DISABLE;
hcan.Init.AutoWakeUp = DISABLE;
@@ -56,7 +56,7 @@ void MX_CAN_Init(void)
/* USER CODE BEGIN CAN_Init 2 */
CAN_FilterTypeDef canfilterconf;
canfilterconf.FilterActivation = CAN_FILTER_ENABLE;
canfilterconf.FilterBank = 18;
canfilterconf.FilterBank = 0;
canfilterconf.FilterFIFOAssignment = CAN_FILTER_FIFO1;
canfilterconf.FilterIdHigh = 0x399 << 5;
canfilterconf.FilterIdLow = 0x0000;
@@ -81,20 +81,22 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
/* CAN1 clock enable */
__HAL_RCC_CAN1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**CAN GPIO Configuration
PA11 ------> CAN_RX
PA12 ------> CAN_TX
PB8 ------> CAN_RX
PB9 ------> CAN_TX
*/
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__HAL_AFIO_REMAP_CAN1_2();
/* CAN1 interrupt Init */
HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 0, 0);
@@ -117,10 +119,10 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
__HAL_RCC_CAN1_CLK_DISABLE();
/**CAN GPIO Configuration
PA11 ------> CAN_RX
PA12 ------> CAN_TX
PB8 ------> CAN_RX
PB9 ------> CAN_TX
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9);
/* CAN1 interrupt Deinit */
HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn);

View File

@@ -48,6 +48,7 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
@@ -59,11 +60,11 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pin : PA10 (Input with Pull-Down) */
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
/*Configure GPIO pin : PC15 */
GPIO_InitStruct.Pin = GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}

View File

@@ -65,6 +65,7 @@ uint8_t RxData[8];
uint32_t TxMailbox;
uint8_t isValidData;
uint8_t status;
/* USER CODE END 0 */
@@ -102,17 +103,14 @@ int main(void)
HAL_CAN_Start(&hcan);
HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO1_MSG_PENDING);
HAL_Delay(50);
TxHeader.DLC = 2;
TxHeader.DLC = 1;
TxHeader.IDE = CAN_ID_STD;
TxHeader.RTR = CAN_RTR_DATA;
TxHeader.StdId = 0x399;
TxData[0] = 100;
TxData[1] = 255;
int GPIOSTATUS = 0;
int oldGPIOSTATUS = 0;
TxData[0] = 0x1;
/* USER CODE END 2 */
@@ -120,35 +118,27 @@ int main(void)
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
GPIOSTATUS = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10);
if(GPIOSTATUS && !oldGPIOSTATUS){
HAL_Delay(20);
HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox);
}
oldGPIOSTATUS = GPIOSTATUS;
if(isValidData){
isValidData = 0;
for(int i = 0; i < RxData[0]; i++){
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(RxData[1]);
}
}
/* USER CODE BEGIN 3 */
//HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
}
/* USER CODE END 3 */
}
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan){
if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader, RxData) != HAL_OK) {
return;
};
if(RxHeader.DLC == 2){
isValidData = 1;
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
{
HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader, RxData);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,RxData[0]);
}
void HAL_GPIO_EXTI15_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_15)
{
TxData[0] ^= 1;
HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox);
}
}
/**
* @brief System Clock Configuration
* @retval None