Comment déboguer des réinitialisations inattendues dans un périphérique STM32?

Je fais du développement en C avec un STM32F107 puce et, à un certain point, l'appareil a commencé à se réinitialiser lorsque j'appelle une fonction spécifique. Je n'ai pas de débogueur et mon débogage est tout simplement du texte sur un port série.

J'ai utilisé certains autres microcontrôleurs dans lequel j'ai été en mesure d'accéder à un registre pour voir la cause de la réinitialisation, mais je n'arrive pas à trouver un équivalent de cette appareil. Je suis conscient du matériel exceptions du Cortex-M3, mais je ne sais pas si l'un d'entre eux est déclenché depuis je n'arrive pas à envoyer du texte sur usart quand je suis à l'intérieur de ces gestionnaires (peut-être parce que mon TX fonctions interruptions d'utilisation?).

Alors, j'ai décidé de demander à des gens avec plus d'expérience que moi dans ce dispositif: ce qui est généralement fait pour déboguer des situations comme celles-ci?

MODIFIER

L'un des développeurs activé le WWDG chien de garde et il a été de mettre à zéro le matériel avant que je puisse obtenir mon info de la faute des gestionnaires. C'était une erreur matérielle en raison de l'appel d'une fonction par un pointeur qui pointait à la mauvaise place. Cependant, je vais garder cette question dans l'espoir que quelqu'un va donner plus de détails (ou matériel) pour les renvoyant à du code C à partir de l'registres informatisés, conservés dans, disons, une erreur matérielle (@dwelch idée).

source d'informationauteur ivarec | 2012-01-10