Skocz do zawartości

Stm32 biblioteka HAL przerwania CAN


bremenpl

Pomocna odpowiedź

Witam,
Uzywam stm32Cube do generowania kodu dla SW4 ktorego uzywam w eclipse.

Staram sie usrawic przerwania RX dla CAN1, ale nie moge tego uruchomic, program counter nigdy nie wchodzi do obslugi przerwania. Wysylanie dziala.

Testowa procedura dla sprawdzenia wysylania:

CanTxMsgTypeDef TxMess;
 TxMess.ExtId = 0x234501;
 //TxMess.StdId = 0x241;
 TxMess.RTR = CAN_RTR_DATA;
 TxMess.IDE = CAN_ID_EXT;
 TxMess.DLC = 4;
 TxMess.Data[0] = 0x04;
 TxMess.Data[1] = 0x01;
 TxMess.Data[2] = 0x02;
 TxMess.Data[3] = 0x11;

 hcan1.pTxMsg = &TxMess;
 HAL_StatusTypeDef status1 = HAL_CAN_Transmit(&hcan1, 10);

Ponizsza funkcja zwraca 0, wiec wydaje mi sie ze prerwania RX sa wlaczone.

HAL_CAN_Receive_IT(&hcan1, CAN_FIFO0)

Czekam na przerwanie w miejscu wygenerowanym przez Cube:

* @brief This function handles CAN1 RX0 interrupts.
*/
void CAN1_RX0_IRQHandler(void)
{
 /* USER CODE BEGIN CAN1_RX0_IRQn 0 */

 /* USER CODE END CAN1_RX0_IRQn 0 */
 HAL_CAN_IRQHandler(&hcan1);
 /* USER CODE BEGIN CAN1_RX0_IRQn 1 */

 /* USER CODE END CAN1_RX0_IRQn 1 */
}

Ale nic nie dostaje. Nie ustawialem filtrow na CAN ID, wiec powinno czytac od kazdego ID. Czy o czyms zapomnialem?

W internecie nie moge praktycznie znalezc zadnych step-by-step tutoriali pokazujacych jak uzywac HAL'a, a sam doxygen z biblioteki nie ma praktycznych przykladow.

Bylbym wdzieczny za kazda pomoc.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.