Я новичок в микроконтроллерах STM32 и протоколе связи по шине CAN, и я работаю над программированием микроконтроллера STM32F103xx и хочу использовать шину CAN для передачи данных в другой микроконтроллер из того же семейства. Я установил все необходимое, нопри отладке кода он застревает в ожидающей функции передачи и не передает.нет проблем с оборудованием. Проверьте мой код, если я что-то упустил.
Я пробовал и обычный режим, и режим LOOPBACK для обработчика CAN, и они оба не работали
int main(void)
{
HAL_Init();
SystemClock_Config();
uint32_t BUTTON_0;
uint32_t BUTTON_1;
uint8_t Data_0[5] = "aaaaa";
uint8_t Data_1[5] = "ZZZZZ";
MX_GPIO_Init();
MX_CAN_Init();
if(HAL_CAN_Init(&hcan) != HAL_OK ){
Error_Handler();
}
if(HAL_CAN_Start(&hcan) != HAL_OK ){
Error_Handler();
}
while (1)
{
TxHeader.DLC = 5;
TxHeader.StdId = 0x65D;
TxHeader.IDE = CAN_ID_STD;
TxHeader.RTR = CAN_RTR_DATA;
BUTTON_0 = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
BUTTON_1 = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
if(BUTTON_0 == 0U ){
if(HAL_CAN_AddTxMessage(&hcan, &TxHeader, Data_0, &TxMailbox) != HAL_OK ){
Error_Handler();
}
}
if(BUTTON_1 == 0U ){
if(HAL_CAN_AddTxMessage(&hcan, &TxHeader, Data_1, &TxMailbox) != HAL_OK ){
Error_Handler();
}
}
while(HAL_CAN_IsTxMessagePending(&hcan, TxMailbox));
if(BUTTON_0 && BUTTON_1 == 0U ){
printf("Please Press a Buttom");
}
}
}
Я хочу, чтобы данные передавались, но это не