working transmit data
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user