2012-01-03 3 views
2

Je me demande s'il est sûr d'appeler une fonction via un pointeur de fonction alors qu'il se trouve dans un gestionnaire d'événements sur un STM32. Le gestionnaire d'événements est pour I2C et a la plus haute priorité. La fonction à appeler peut être supposée rapide (juste un peu de réordonnancement des octets).Pointeur de fonction STM32 du gestionnaire d'événements

Merci pour des conseils ou des commentaires.

Arne

+2

Oui, je n'y vois aucun problème. De quoi t'inquiètes-tu exactement? – avakar

+0

Je suis seulement suspect .. – Arne

Répondre

2

Si le pointeur de fonction est initialisé, cela devrait fonctionner correctement. Le seul problème que je peux penser à celui habituel avec les gestionnaires d'interruption - si le 'réordonnancement des octets' implique la suppression/l'ajout d'octets à partir des tampons tx/rx, la gestion des tampons doit pouvoir être interrompue en toute sécurité.

1

Oui. Cela dit, il existe un risque potentiel. Vous devez vous assurer que le pointeur de fonction est initialisé lorsque le gestionnaire d'événements est activé.

Normalement, les variables globales sont initialisées avant que main soit appelée, mais si le gestionnaire d'événements est actif avant cela, vous pourriez rencontrer des problèmes.

+0

Merci pour le rappel, mais les événements I2C ne sont activés longtemps après le code de démarrage. – Arne