Bonjour,
Désolé pour le titre farfelu, mais je ne sais même pas comment nommer mon problème.
Je programme actuellement une carte en C : STM32F303K8. J'ain utilisé les libraires pour faire de la liaison SPI/UART/TIMERS/I2C etc...
Là n'est pas le problème, lorsque j'effectuais un projet de test pour par exemple programmer une liaison SPI, je le compilais, l'éxécutais et hop, je debug le tout car rien ne marche d'un coup
Aujourd'hui, j'ai créé un nouveau projet, où j'intègre un protocole de communication sur un bus, et dans ce dit projet plus rien ne marche !
Que ce soit le timer, les interruptions etc... J'ai donc debugguer le tout, et je me suis rendu compte que l'instruction passait par des fonctions d'interruptions d'erreurs :
NMI_Handler()
MemManage_Handler()
Reset_Handler()
Code:void NMI_Handler(void) { //USER CODE BEGIN NonMaskableInt_IRQn 0 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET); //USER CODE END NonMaskableInt_IRQn 0 //USER CODE BEGIN NonMaskableInt_IRQn 1 //USER CODE END NonMaskableInt_IRQn 1 } /** * @brief This function handles reset fault. */ void Reset_Handler(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET); while (1) { } } /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { /* USER CODE BEGIN MemoryManagement_IRQn 0 */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET); /* USER CODE END MemoryManagement_IRQn 0 */ while (1) { } /* USER CODE BEGIN MemoryManagement_IRQn 1 */ /* USER CODE END MemoryManagement_IRQn 1 */ }
Lorsque j'utilise le debug mode, aucun soucis, je peux aller dans le main.c et faire mon programme (par exemple allumer une simple LED) mais lorsque j'utilise le RUN mode, et bien rien ne se passe, il semblerait que le programme rentre dans une boucle infinie.
Mon projet se définit de la sorte : un fichier pour chaque "fonction" du µC, donc un fichier .c "TIMER" un fichier .c "SPi", un fichier .c "UART' et j'en passe...
Pour essayer de comprendre ce problème j'ai mis des breakpoint un peu partout, mais lrosque j'en met dans les fonctions d'interruptions, cela me met :
"No line XX in file YYY.c."
et lorsque je ne met aucun breakpoint et que je désactive le breakpoint de base du main.c (pour le debug), j'ai : "no source file name main.c".
Pour résumer : je peux par exemple allumer une LED en utilisant le debugguer, mais pas en effectuant un Run mode.
et j'aimerais savoir si vous saviez ce qu'était conretement le NMI "non maskable interrupt" ? ainsi que les autres fonctions.
Je sais que ça à l'air vachement brouillon comme question/topic/sujet, mais je vous avoue que je ne comprend rien.
(J'ai recompiler/exécuté d'anciens programme avec des UARTs/TImer etc.. et tout fonctionne normalement)
Merci pour la possible aide que vous pourrez m'apporter,
Je reste dispo pour toutes questions dans l'immédiat.
-----