Κοινή χρήση τεχνολογίας

Χρονόμετρο STM32-TIM

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Αυτό το περιεχόμενο βασίζεται σεΒίντεο Jiangxie Technology STM32Περιεχόμενο, οργανωμένο.

1. ΤΙΜ

Χρονοδιακόπτης 1.1 TIM

  • Ο χρονοδιακόπτης μπορεί να μετρήσει το ρολόι εισόδου και να ενεργοποιήσει μια διακοπή όταν η τιμή μέτρησης φτάσει την καθορισμένη τιμή.
  • Η μονάδα βάσης χρόνου του μετρητή 16 bit, του prescaler και του αυτόματου καταχωρητή επαναφόρτωσης μπορεί να επιτύχει μέγιστο χρονισμό 59,65 δευτ. κάτω από ένα ρολόι μέτρησης 72 MHz. 1/(72/65536/65536) (Ο μετρητής είναι ένας καταχωρητής που χρησιμοποιείται για την εκτέλεση του χρονισμού μέτρησης. Κάθε φορά που έρχεται ένα ρολόι, ο μετρητής αυξάνεται κατά 1. Ο προκλιμακωτής μπορεί να διαιρέσει τον μετρητή για να κάνει την μέτρηση πιο ευέλικτη. Αυτόματη επανεκκίνηση Το φορτωμένο καταχωρητής είναι η τιμή-στόχος της μέτρησης, η οποία είναι πόσα ρολόγια θέλετε να μετρήσετε για να εφαρμόσετε μια διακοπή.
  • Δεν διαθέτει μόνο βασικές λειτουργίες προγραμματισμένης διακοπής, αλλά περιλαμβάνει επίσης επιλογή εσωτερικής και εξωτερικής πηγής ρολογιού, λήψη εισόδου, σύγκριση εξόδων, διεπαφή κωδικοποιητή, λειτουργία ενεργοποίησης master-slave και άλλες λειτουργίες.
  • Σύμφωνα με την πολυπλοκότητα και τα σενάρια εφαρμογής, χωρίζεται σε τρεις τύπους: προηγμένο χρονόμετρο, γενικό χρονόμετρο και βασικό χρονόμετρο.

1.2 Τύπος χρονοδιακόπτη

τύποςσειριακός αριθμόςλεωφορείοΛειτουργία
Προηγμένο χρονόμετροTIM1, TIM8APB2Διαθέτει όλες τις λειτουργίες ενός γενικού χρονοδιακόπτη, και έχει πρόσθετες λειτουργίες όπως μετρητή επανάληψης, δημιουργία νεκρής ζώνης, συμπληρωματική έξοδο, είσοδο φρένου κ.λπ.
Universal χρονόμετροTIM2, TIM3, TIM4, TIM5APB1Διαθέτει όλες τις λειτουργίες ενός βασικού χρονοδιακόπτη και έχει πρόσθετες λειτουργίες όπως επιλογή εσωτερικής και εξωτερικής πηγής ρολογιού, λήψη εισόδου, σύγκριση εξόδων, διεπαφή κωδικοποιητή, λειτουργία ενεργοποίησης κύριας-σκλάβης κ.λπ.
βασικό χρονόμετροTIM6, TIM7APB1Διαθέτει τις λειτουργίες προγραμματισμένης διακοπής και κύριας λειτουργίας ενεργοποίησης DAC
  • Πόροι χρονοδιακόπτη STM32F103C8T6: TIM1, TIM2, TIM3, TIM4
  • DAC: μετατροπέας ψηφιακού σε αναλογικό

1.3 Βασικό χρονόμετρο

Η κύρια λειτουργία:

  • Μετρητής συσσώρευσης αυτόματης επαναφόρτωσης 16 bit
  • Προγραμματιζόμενος προκλιμακωτής 16-bit, που χρησιμοποιείται για τη διαίρεση του ρολογιού εισόδου με οποιαδήποτε τιμή μεταξύ 1 και 65536
  • Σύγχρονο κύκλωμα που ενεργοποιεί το DAC
  • Αίτημα διακοπής/DMA που δημιουργήθηκε στο συμβάν ενημέρωσης (υπερχείλιση μετρητή)

image.png

  • Prescaler PSC
    Η είσοδος του ρολογιού μέτρησης αναφοράς συνδέεται πριν από τον προκλιμακωτή. Εφόσον ο βασικός χρονοδιακόπτης μπορεί να επιλέξει μόνο το εσωτερικό ρολόι, η γραμμή εισόδου του prescaler μπορεί να θεωρηθεί ότι είναι συνδεδεμένη με το εσωτερικό ρολόι (CK_INT).
    Η πηγή του εσωτερικού ρολογιού είναι το TIMxCLK του RCC. Η τιμή συχνότητας εδώ είναι γενικά η κύρια συχνότητα του συστήματος των 72 MHz.
    Η εγγραφή 0 στον προκλιμακωτό σημαίνει ότι δεν υπάρχει διαίρεση συχνότητας 1 σημαίνει διαίρεση της συχνότητας με το 2 και η συχνότητα εξόδου = συχνότητα εισόδου/2 = 36 MHz.
    Γράψιμο 2 σημαίνει διαίρεση με 3 και έξοδος = είσοδος/3. Επομένως, η τιμή του προκλιμακωτή διαφέρει από τον πραγματικό συντελεστή διαίρεσης συχνότητας κατά 1 και ο πραγματικός συντελεστής διαίρεσης συχνότητας = η τιμή του προκλιμακωτή 1. Το prescaler είναι 16 bit, επομένως η μέγιστη τιμή μπορεί να γραφτεί ως 65535, το οποίο διαιρείται με το 65536.

  • Μετρητής CNT
    Ο μετρητής μπορεί να μετρήσει το προδιαιρεμένο ρολόι μέτρησης Κάθε φορά που το ρολόι μέτρησης φτάνει σε μια ανερχόμενη ακμή, η τιμή του μετρητή αυξάνεται κατά 1. Ο μετρητής είναι επίσης 16 bit, οπότε η τιμή μέσα μπορεί να προστεθεί από 0 έως 65535. Εάν προστεθούν περισσότερα, ο μετρητής θα επιστρέψει στο 0 και θα ξεκινήσει ξανά. Επομένως, η τιμή του μετρητή θα συνεχίσει να αυξάνεται κατά τη διάρκεια της διαδικασίας μέτρησης Όταν η αύξηση φτάσει στην τιμή στόχο, θα δημιουργηθεί μια διακοπή και η προγραμματισμένη εργασία θα ολοκληρωθεί. Επομένως, απαιτείται ένας καταχωρητής για την αποθήκευση της τιμής στόχου, που είναι ο αυτόματος καταχωρητής επαναφόρτωσης.

  • Αυτόματη επαναφόρτωση καταχωρητή
    Ο καταχωρητής αυτόματης επαναφόρτωσης είναι επίσης 16 bit και αποθηκεύει τον στόχο μέτρησης που πρόκειται να γραφτεί. Κατά τη διάρκεια της διαδικασίας εκτέλεσης, η τιμή μέτρησης συνεχίζει να αυξάνεται και η τιμή αυτόματης επαναφόρτωσης είναι ένας σταθερός στόχος Όταν η τιμή μέτρησης ισούται με την τιμή αυτόματης επαναφόρτωσης, ο χρόνος συγχρονισμού έχει τελειώσει. Στη συνέχεια, θα δημιουργήσει ένα σήμα διακοπής, θα διαγράψει τον μετρητή και ο μετρητής θα ξεκινήσει αυτόματα τον επόμενο χρόνο μέτρησης.

  • Βέλη U και UI
    Ένα βέλος έκπτωσης προς τα πάνω που σχεδιάζεται στην εικόνα σημαίνει ότι ένα σήμα διακοπής θα δημιουργηθεί εδώ. Αυτή η διακοπή ενημέρωσης θα οδηγήσει στο NVIC Μόλις διαμορφώσουμε το κανάλι του χρονοδιακόπτη του NVIC, η CPU θα ανταποκριθεί στη διακοπή ενημέρωσης του χρονοδιακόπτη. Το βέλος προς τα κάτω αντιπροσωπεύει ότι θα δημιουργηθεί ένα συμβάν και το αντίστοιχο συμβάν εδώ ονομάζεται "συμβάν ενημέρωσης". Τα συμβάντα ενημέρωσης δεν προκαλούν διακοπές, αλλά μπορούν να ενεργοποιήσουν την εργασία άλλων εσωτερικών κυκλωμάτων.

1.4 Γενικό χρονόμετρο

Η κύρια λειτουργία:

  • Μετρητής συσσωρευτή αυτόματης επαναφόρτωσης 16 bit πάνω, κάτω, πάνω/πάνω

  • Προγραμματιζόμενος προκλιμακωτής 16-bit, που χρησιμοποιείται για τη διαίρεση του ρολογιού εισόδου με οποιαδήποτε τιμή μεταξύ 1 και 65536

  • 4 ανεξάρτητα κανάλια:

    • σύλληψη εισόδου
    • Σύγκριση εξόδου
    • Δημιουργία PWM (λειτουργία ευθυγράμμισης άκρης ή κέντρου)
    • Έξοδος λειτουργίας μονού παλμού
  • Κυκλώματα συγχρονισμού που ελέγχουν χρονοδιακόπτες και χρονοδιακόπτες διασυνδέονται χρησιμοποιώντας εξωτερικά σήματα

  • Το Interrupt/DMA δημιουργείται όταν συμβαίνουν τα ακόλουθα συμβάντα:

    • Ενημέρωση: Υπερχείλιση/υπόρροη μετρητή, προετοιμασία μετρητή (μέσω λογισμικού ή εσωτερικής/εξωτερικής σκανδάλης)
    • Συμβάντα ενεργοποίησης (αντεκκίνηση, διακοπή, αρχικοποίηση ή καταμέτρηση που ενεργοποιείται από εσωτερικό/εξωτερικό)
    • σύλληψη εισόδου
    • Σύγκριση εξόδου
  • Υποστηρίζει αυξητικό (τετραγωνικό) κωδικοποιητή και κυκλώματα αισθητήρα Hall για τοποθέτηση

  • Ενεργοποιήστε την είσοδο ως εξωτερικό ρολόι ή διαχείριση ρεύματος ανά κύκλο
    image.png

  • Μετρητής CNT
    Ο μετρητής CNT υποστηρίζει τη λειτουργία μέτρησης προς τα πάνω, τη λειτουργία μέτρησης προς τα κάτω και τη λειτουργία στοίχισης στο κέντρο. Η λειτουργία μέτρησης προς τα κάτω ξεκινά από την τιμή επαναφόρτωσης και μειώνεται προς τα κάτω Αφού μειωθεί στο 0, επιστρέφει στην τιμή επαναφόρτωσης και ισχύει για διακοπή. Η λειτουργία με ευθυγράμμιση στο κέντρο ξεκινά από το 0, πρώτα προσαυξάνεται προς τα πάνω, μετράει την τιμή επαναφόρτωσης και ισχύει για μια διακοπή και, στη συνέχεια, μειώνεται προς τα κάτω στο 0 και, στη συνέχεια, ισχύει για μια διακοπή.

  • πηγή ρολογιού
    Η πηγή ρολογιού του γενικού χρονοδιακόπτη μπορεί όχι μόνο να επιλέξει το εσωτερικό ρολόι 72 MHz, αλλά μπορεί επίσης να επιλέξει ένα εξωτερικό ρολόι.
    (1)Το πρώτο εξωτερικό ρολόι είναι απόΕξωτερικό ρολόι στην καρφίτσα TIMx_ETR , δηλαδή, μπορείτε να συνδέσετε ένα εξωτερικό ρολόι τετράγωνου κύματος στον πείρο ETR του TIM2, PA0 και στη συνέχεια να διαμορφώσετε το κύκλωμα επιλογής εσωτερικής πολικότητας, ανίχνευσης άκρων και προκαταρκτικής κλίμακας, καθώς και το κύκλωμα φίλτρου εισόδου ορισμένη διαμόρφωση. Επειδή είναι ένα εξωτερικό ρολόι pin, αναπόφευκτα θα υπάρξουν κάποιες δυσλειτουργίες, έτσι αυτά τα κυκλώματα μπορούν να φιλτράρουν την κυματομορφή εισόδου. Το φιλτραρισμένο σήμα χωρίζεται σε δύο κανάλια Το πάνω κανάλι ETRF εισέρχεται στον ελεγκτή σκανδάλης και στη συνέχεια το ρολόι μπορεί να επιλεγεί ως μονάδα βάσης χρόνου. Αυτός ο δρόμος ονομάζεται επίσης "Λειτουργία εξωτερικού ρολογιού 2”。
    image.png
    (2) Το TRGI μπορεί επίσης να παρέχει ένα εξωτερικό ρολόι , χρησιμοποιείται κυρίως ως είσοδος σκανδάλης Αυτή η είσοδος σκανδάλης μπορεί να ενεργοποιήσει τη λειτουργία υποτελούς λειτουργίας του χρονοδιακόπτη. Όταν το TRGI χρησιμοποιείται ως εξωτερικό ρολόι, αυτή η διαδρομή ονομάζεται "Λειτουργία εξωτερικού ρολογιού 1". Ποια είναι τα εξωτερικά ρολόγια που διέρχονται από αυτήν τη διαδρομή; Το πρώτο είναι το σήμα της ακίδας ETR. Το δεύτερο είναι το σήμα ITR. Αυτό το τμήμα του σήματος ρολογιού προέρχεται από άλλους χρονομετρητές. Το TRGO σε λειτουργία κύριας λειτουργίας μπορεί να οδηγήσει σε Άλλα χρονόμετρα Κατά τη σύνδεση με άλλα χρονόμετρα, συνδέεται με τις ακίδες ITR0 σε άλλα χρονόμετρα που προέρχονται από τις εξόδους TRGO των άλλων τεσσάρων χρονομέτρων. CH1 pin, δηλαδή, το ρολόι λαμβάνεται από τον ακροδέκτη CH1 Το επίθημα ED (Edge) μπορεί επίσης να ληφθεί μέσω του TI1FP1 και το TI2FP1 είναι το ρολόι που συνδέεται με τον ακροδέκτη CH1 το ρολόι CH2.
    Περίληψη: Η είσοδος στη λειτουργία εξωτερικού ρολογιού 1 μπορεί να είναι η ακίδα ETR, άλλοι χρονοδιακόπτες, η άκρη της ακίδας CH1, η ακίδα CH1 και η ακίδα CH2.

  • Κύκλωμα σύγκρισης εξόδου
    Το παρακάτω δεξί τμήμα είναι το κύκλωμα σύγκρισης εξόδου Υπάρχουν συνολικά τέσσερα κανάλια, που αντιστοιχούν στις ακίδες του CH1 έως το CH4, τα οποία μπορούν να χρησιμοποιηθούν για την έξοδο κυματομορφών PWM και κινητήρων.

  • Κύκλωμα σύλληψης εισόδου
    Αριστερά είναι το κύκλωμα λήψης εισόδου, το οποίο έχει επίσης τέσσερα κανάλια, που αντιστοιχούν στις ακίδες CH1 έως CH4, που μπορούν να χρησιμοποιηθούν για τη μέτρηση της συχνότητας του τετραγωνικού κύματος εισόδου κ.λπ.

  • καταγραφή/σύγκριση μητρώου
    Ο μεσαίος καταχωρητής είναι ο καταχωρητής σύλληψης/σύγκρισης, ο οποίος είναι κοινόχρηστος από τα κυκλώματα σύγκρισης εισόδου και εξόδου. Επειδή η σύγκριση εισόδου και σύγκρισης εξόδου δεν μπορούν να χρησιμοποιηθούν ταυτόχρονα, οι καταχωρητές εδώ είναι κοινόχρηστοι και οι ακίδες είναι επίσης κοινόχρηστες.

1.4 Προηγμένο χρονόμετρο

Η κύρια λειτουργία:

  • Μετρητής συσσωρευτή αυτόματης επαναφόρτωσης 16 bit πάνω, κάτω, πάνω/πάνω
  • Προγραμματιζόμενος προκλιμακωτής 16-bit, που χρησιμοποιείται για τη διαίρεση του ρολογιού εισόδου με οποιαδήποτε τιμή μεταξύ 1 και 65536
  • 4 ανεξάρτητα κανάλια:
    • σύλληψη εισόδου
    • Σύγκριση εξόδου
    • Δημιουργία PWM (λειτουργία ευθυγράμμισης άκρης ή κέντρου)
    • Έξοδος λειτουργίας μονού παλμού
  • Προγραμματιζόμενες συμπληρωματικές έξοδοι νεκρού χρόνου
  • Κυκλώματα συγχρονισμού που ελέγχουν χρονοδιακόπτες και χρονοδιακόπτες διασυνδέονται χρησιμοποιώντας εξωτερικά σήματα
  • Επιτρέπει την ενημέρωση ενός επαναλαμβανόμενου μετρητή σε έναν καταχωρητή χρονοδιακόπτη μετά από μια περίοδο μετρητή καθορισμένων δεδομένων
  • Το σήμα εισόδου του φρένου μπορεί να τοποθετήσει το σήμα εξόδου του χρονοδιακόπτη σε κατάσταση επαναφοράς ή σε γνωστή κατάσταση
  • Το Interrupt/DMA δημιουργείται όταν συμβαίνουν τα ακόλουθα συμβάντα:
    • Ενημέρωση: Υπερχείλιση/υπόρροη μετρητή, προετοιμασία μετρητή (μέσω λογισμικού ή εσωτερικής/εξωτερικής σκανδάλης)
    • Συμβάντα ενεργοποίησης (αντεκκίνηση, διακοπή, αρχικοποίηση ή καταμέτρηση που ενεργοποιείται από εσωτερικό/εξωτερικό)
    • σύλληψη εισόδου
    • Σύγκριση εξόδου
    • Είσοδος σήματος φρένων
  • Υποστηρίζει αυξητικό (τετραγωνικό) κωδικοποιητή και κυκλώματα αισθητήρα Hall για τοποθέτηση
  • Ενεργοποιήστε την είσοδο ως εξωτερικό ρολόι ή διαχείριση ρεύματος ανά κύκλο

image.png

  • Επαναλάβετε τον μετρητή
    Η διαφορά από ένα γενικό χρονόμετρο: το πρώτο είναι να προσθέσετε έναν μετρητή επανάληψης όπου εφαρμόζεται η διακοπή Με αυτόν τον μετρητή, μπορείτε να συνειδητοποιήσετε ότι τα συμβάντα ενημέρωσης και οι διακοπές ενημέρωσης συμβαίνουν μόνο κάθε λίγους κύκλους μέτρησης. Η αρχική δομή είναι ότι μια ενημέρωση θα συμβεί μετά την ολοκλήρωση κάθε κύκλου μέτρησης, κάτι που ισοδυναμεί με τη διαίρεση του σήματος ενημέρωσης εξόδου ξανά.

  • Γεννήτρια νεκρής ζώνης DTG και συμπληρωματική έξοδος
    Ακολουθεί η αναβάθμιση της μονάδας σύγκρισης εξόδων από το προηγμένο χρονόμετρο DTG (dead time generate) είναι ένα κύκλωμα παραγωγής νεκρής ζώνης. Η ακίδα εξόδου στα δεξιά έχει αλλάξει από την αρχική μία σε δύο συμπληρωματικές εξόδους, οι οποίες μπορούν να εξάγουν ένα ζεύγος συμπληρωματικών κυμάτων PWM Αυτά τα κυκλώματα χρησιμοποιούνται για την κίνηση τριφασικών κινητήρων χωρίς ψήκτρες, όπως τα αεροσκάφη τετρακόπτερα, οι πίσω τροχοί των ηλεκτρικών. οχήματα και ηλεκτρικά τρυπάνια Περιμένετε, μπορεί να είναι τριφασικός κινητήρας χωρίς ψήκτρες. Επειδή το κύκλωμα κίνησης ενός τριφασικού κινητήρα χωρίς ψήκτρες απαιτεί γενικά 3 βραχίονες γέφυρας, κάθε βραχίονας γέφυρας ελέγχεται από 2 σωλήνες μεταγωγής υψηλής ισχύος, επομένως απαιτούνται συνολικά 6 σωλήνες μεταγωγής υψηλής ισχύος. Επομένως, οι τρεις πρώτες ακίδες PWM εξόδου εδώ γίνονται συμπληρωματικές έξοδοι. Επιπλέον, για να αποφευχθεί το βραχυπρόθεσμο φαινόμενο shoot-through που προκαλείται από τις ατέλειες της συσκευής τη στιγμή της μεταγωγής όταν η συμπληρωματική έξοδος PWM κινεί τον βραχίονα της γέφυρας, προστίθεται ένα κύκλωμα παραγωγής νεκρής ζώνης μπροστά. Τη στιγμή που ενεργοποιείται ο διακόπτης, δημιουργείται μια νεκρή ζώνη ορισμένου χρονικού διαστήματος, επιτρέποντας την απενεργοποίηση τόσο των άνω όσο και των κάτω σωλήνων του βραχίονα της γέφυρας για να αποτραπεί το shoot-through.

  • είσοδος φρένου
    Το τελευταίο μέρος είναι η λειτουργία εισόδου του φρένου, η οποία είναι η παροχή εγγύησης ασφάλειας για την κίνηση του κινητήρα. Εάν ο εξωτερικός πείρος BKIN (Break IN) παράγει ένα σήμα πέδησης ή το εσωτερικό ρολόι αποτύχει και παρουσιαστεί σφάλμα, το κύκλωμα ελέγχου θα διακόψει αυτόματα την έξοδο του κινητήρα για την αποφυγή ατυχημάτων.

1.5 Βασική δομή προγραμματισμένης διακοπής

image.png
Έλεγχος λειτουργίας: έλεγχος ορισμένων bit στον καταχωρητή, όπως έναρξη και διακοπή, μέτρηση προς τα πάνω ή προς τα κάτω, κ.λπ.
Η δεξιά πλευρά είναι όπου το σήμα πάει μετά τη λήξη του χρόνου και τη διακοπή ενημέρωσης Εάν πρόκειται για προηγμένο χρονόμετρο, θα υπάρχει ένας επιπλέον μετρητής επανάληψης. Το σήμα διακοπής θα ορίσει πρώτα ένα bit σημαίας διακοπής στον καταχωρητή κατάστασης Αυτό το bit σημαίας θα ελέγχεται μέσω της εξόδου διακοπής και θα υποβάλει αίτηση για διακοπή στο NVIC. Ο έλεγχος εξόδου διακοπής είναι ένα bit ενεργοποίησης για έξοδο διακοπής Εάν χρειάζεστε διακοπή, θυμηθείτε να το ενεργοποιήσετε.
image.png
image.png

1.6 Χρονισμός Prescaler

image.png

  • Συχνότητα μέτρησης μετρητή: CK_CNT = CK_PSC / (PSC 1)
  • CK_PSC: Ρολόι Prescaler, το εσωτερικό ρολόι είναι 72MHz.
  • CNT_EL: Ο μετρητής είναι ενεργοποιημένος, ο μετρητής υψηλού επιπέδου λειτουργεί κανονικά και ο μετρητής χαμηλού επιπέδου σταματά.
  • CK_CNT: Ρολόι μετρητή, που είναι και η έξοδος ρολογιού του προκλιμακωτή και η είσοδος ρολογιού του μετρητή.
  • Στην αρχή, ο μετρητής δεν είναι ενεργοποιημένος και ο μετρητής δεν λειτουργεί. Μετά την ενεργοποίηση, στο πρώτο μισό της περιόδου, ο πραγματικός συντελεστής διαίρεσης συχνότητας είναι 1 (PSC=0) και το ρολόι του μετρητή είναι ίσο με το ρολόι πριν από τον προκλιμακωτή στο δεύτερο μισό, ο πραγματικός συντελεστής διαίρεσης συχνότητας είναι 2 ( PSC=1), και το ρολόι του μετρητή Το ρολόι γίνεται το μισό του ρολογιού πριν από το prescaler. Καθοδηγούμενος από τον μετρητή, ο ακόλουθος καταχωρητής μετρητή συνεχίζει επίσης να αυξάνεται με την ανερχόμενη άκρη του ρολογιού Μετά τη μεσαία θέση FC, η τιμή μέτρησης γίνεται 0. Από εδώ, μπορεί να συναχθεί ότι η τιμή αυτόματης επαναφόρτωσης ARR είναι FC. Όταν η τιμή μέτρησης είναι ίση με την τιμή επαναφόρτωσης και έρχεται το επόμενο ρολόι, η τιμή μέτρησης διαγράφεται στο μηδέν και δημιουργείται ένα συμβάν ενημέρωσης παρακάτω Αυτή είναι η ροή εργασίας ενός κύκλου μέτρησης.
  • Οι ακόλουθες τρεις γραμμές περιγράφουν έναν μηχανισμό προσωρινής αποθήκευσης του καταχωρητή prescaler, δηλαδή, υπάρχουν δύο καταχωρητές prescaler, ο οποίος δεν καθορίζει άμεσα τον συντελεστή διαίρεσης . Υπάρχει επίσης ένας καταχωρητής προσωρινής αποθήκευσης ή ένας σκιώδης καταχωρητής: Αυτός ο καταχωρητής προσωρινής αποθήκευσης είναι ο καταχωρητής που λειτουργεί πραγματικά. Ο συντελεστής διαίρεσης του ρολογιού αμέσως θα κάνει τη συχνότητα του πρώτου ημιχρόνου και του δεύτερου μισού να είναι διαφορετική μέσα σε έναν κύκλο μέτρησης. Ως εκ τούτου, σχεδιάζεται ένα buffer όταν η καταμέτρηση φτάσει στο μισό της μέτρησης, η τιμή του prescaler δεν θα τεθεί αμέσως σε ισχύ, θα περιμένει μέχρι το τέλος αυτού του κύκλου μέτρησης Η τιμή του καταχωρητή προκαταρκτικής κλίμακας θα μεταφερθεί στον καταχωρητή προσωρινής αποθήκευσης πριν τεθεί σε ισχύ.
  • Όπως φαίνεται από την τελευταία γραμμή: ο προκλιμακωτής βασίζεται επίσης στην καταμέτρηση για τη διαίρεση της συχνότητας όταν η τιμή του προκλιμακωτή είναι 0, ο μετρητής είναι πάντα 0 και βγάζει απευθείας την αρχική τιμή όταν η τιμή του προκλιμακωτή είναι 1. Το 1, 0, 1, 0, 1 μετράει έτσι, όταν επιστρέφει στο 0, βγάζει 1 παλμό πραγματικός συντελεστής διαίρεσης συχνότητας Υπάρχει μια μετατόπιση ενός αριθμού.

1.7 Χρονισμός μετρητή

image.png

  • Συχνότητα υπερχείλισης μετρητή: CK_CNT_OV = CK_CNT / (ARR 1) = CK_PSC / (PSC 1) / (ARR 1)
  • CK_INT: Εσωτερικό ρολόι 72MHz;
  • CNT_EL: Ενεργοποίηση μετρητή, ισχύει στην ανερχόμενη άκρη.
  • CK_CNT: Μετρητικό ρολόι, επειδή ο συντελεστής διαίρεσης συχνότητας είναι 2, αυτή η συχνότητα είναι CK_INT διαιρούμενη με 2. Στη συνέχεια, ο μετρητής αυξάνεται σε κάθε ανερχόμενη ακμή αυτού του ρολογιού, όταν φτάσει στο 0036, εμφανίζεται μια υπερχείλιση. Μετά την καταμέτρηση έως το 36, υπάρχει ένα άλλο ανερχόμενο άκρο, ο μετρητής εκκαθαρίζεται, ο μετρητής υπερχειλίζει και δημιουργείται ένας παλμός συμβάντος ενημέρωσης. Επιπλέον, ορίζεται μια σημαία διακοπής ενημέρωσης (UIF). οριστεί σε 1, ζητείται διακοπή Αφού απαντηθεί η διακοπή, πρέπει να διαγραφεί χειροκίνητα στο πρόγραμμα διακοπής.

1.8 Ο μετρητής δεν έχει προεγκατεστημένη σειρά χρονισμού.

image.png
Ο καταχωρητής αυτόματης φόρτωσης έχει αλλάξει από FF σε 36 και η τιμή στόχος της τιμής μέτρησης έχει αλλάξει από FF σε 36, επομένως μετά την καταμέτρηση 36 εδώ, θα ενημερωθεί απευθείας για να ξεκινήσει ο επόμενος γύρος μέτρησης.

1.9 Ο μετρητής έχει προεγκατεστημένο χρονισμό

image.png
Στη μέση της μέτρησης, αλλάξτε την τιμή στόχου μέτρησης από F5 σε 36. Υπάρχει ένας σκιώδης καταχωρητής παρακάτω. Αυτός ο σκιώδης καταχωρητής εξακολουθεί να είναι F5, επομένως ο τρέχων στόχος μέτρησης εξακολουθεί να μετράει στο F5 και δημιουργείται ένα συμβάν ενημέρωσης ο σκιώδης καταχωρητής και στην επόμενη μέτρηση Αυτή η αλλαγή είναι αποτελεσματική μόνο εάν ο κύκλος είναι 36, επομένως ο σκοπός της εισαγωγής του σκιώδη καταχωρητή είναι στην πραγματικότητα για συγχρονισμό, δηλαδή να επιτραπεί η ταυτόχρονη εμφάνιση αλλαγών τιμών και γεγονότων ενημέρωσης για την αποφυγή σφαλμάτων που προκαλούνται από αλλαγές κατά τη λειτουργία.

1.10 RCC δέντρο ρολογιού

image.png

  • πηγή ρολογιού
    Στο κύκλωμα παραγωγής ρολογιού, υπάρχουν τέσσερις πηγές ταλάντωσης:
    (1) HSI: Εσωτερικός ταλαντωτής RC υψηλής ταχύτητας 8MHz.
    (2) HSE: Εξωτερικός ταλαντωτής κρυστάλλων χαλαζία υψηλής ταχύτητας 4~16MHz, επίσης γνωστός ως ταλαντωτής κρυστάλλων, συνδέεται συνήθως με 8MHz.
    (3) LSE: Εξωτερικός ταλαντωτής κρυστάλλου χαμηλής ταχύτητας 32,768KHz, ο οποίος γενικά παρέχει το ρολόι για το RTC.
    (4) LSI: Τέλος, υπάρχει ο εσωτερικός ταλαντωτής RC χαμηλής ταχύτητας 40KHz, ο οποίος μπορεί να παρέχει το ρολόι για τον φύλακα.
    Οι παραπάνω δύο ταλαντωτές κρυστάλλων υψηλής ταχύτητας χρησιμοποιούνται για την παροχή ρολογιών του συστήματος Ταλαντωτής RC, έτσι είναι γενικά Χρησιμοποιήστε έναν εξωτερικό ταλαντωτή κρυστάλλου.

  • Ρολόι διαμόρφωσης ST
    Στη συνάρτηση SystemInit, το ST διαμορφώνει το ρολόι: πρώτα ξεκινά το εσωτερικό ρολόι HSI, επιλέγει το εσωτερικό 8 MHz ως ρολόι συστήματος και εκτελείται προσωρινά με το εσωτερικό ρολόι 8 MHz. Στη συνέχεια, ξεκινήστε το εξωτερικό ρολόι, διαμορφώστε το εξωτερικό ρολόι ώστε να εισέρχεται στον βρόχο κλειδώματος φάσης PLL για πολλαπλασιασμό συχνότητας, τα 8 MHz πολλαπλασιάζονται επί 9 και λαμβάνετε 72 MHz Αφού η έξοδος του βρόχου κλειδώματος φάσης είναι σταθερή, επιλέξτε τον βρόχο κλειδώματος φάσης εξόδου ως το ρολόι του συστήματος, έτσι ώστε το ρολόι του συστήματος άλλαξε από 8MHz σε 72MHz.

  • CSS Clock Security System
    CSS (σύστημα ασφαλείας ρολογιού): Το σύστημα ασφαλείας ρολογιού είναι επίσης υπεύθυνο για την εναλλαγή των ρολογιών του ρολογιού του συστήματος και αποτρέψτε το κολλημένο πρόγραμμα Θάνατος που προκλήθηκε από ατύχημα.

  • κύκλωμα διανομής ρολογιού

    • Δίαυλος AHB: Πρώτον, το ρολόι του συστήματος 72 MHz εισέρχεται στο δίαυλο AHB.
    • Δίαυλος APB1: Ο συντελεστής κατανομής που έχει διαμορφωθεί εδώ είναι 2, άρα το ρολόι του διαύλου APB1 είναι 72MHz/2=36MHz.Παρακάτω, εάν ο συντελεστής προκλιμάκωσης APB1 = 1, η συχνότητα παραμένει αμετάβλητη, διαφορετικά η συχνότητα*2, και στη συνέχεια στη δεξιά πλευρά, ανοίγει χωριστά για χρονόμετρα 2-7, επειδή ο συντελεστής προκλιμάκωσης εδώ είναι 2, επομένως η συχνότητα εδώ πρέπει να είναι*2 , οπότε το ρολόι που οδηγεί στους χρονοδιακόπτες 2~7 είναι 72MHz. Επομένως, είτε πρόκειται για προηγμένο χρονόμετρο, είτε για γενικό χρονόμετρο ή για βασικό χρονόμετρο, το εσωτερικό ρολόι αναφοράς τους είναι 72 MHz.
    • Δίαυλος APB2: Ο συντελεστής διαίρεσης συχνότητας του APB2 είναι 1, επομένως το ρολόι είναι 72 MHz.Στη συνέχεια ενεργοποιείται και το ρολόι που είναι συνδεδεμένο στο APB2, δηλαδή εάν ο συντελεστής προκλιμάκωσης APB2 = 1, η συχνότητα παραμένει αμετάβλητη, διαφορετικά η συχνότητα.*2 . Επειδή ο συντελεστής διαίρεσης συχνότητας είναι 1, τα ρολόγια των χρονόμετρων 1 και 8 είναι 72 MHz.
    • Το τμήμα εξόδου του ρολογιού έχει μια πύλη AND για τον έλεγχο εξόδου Το bit ελέγχου γράφει το εξωτερικό ρολόι ενεργοποιημένο μπορεί να γίνει έξοδος σε περιφερειακά μέσα από πύλες AND.

2. Λειτουργίες και κωδικοί βιβλιοθήκης TIM

2.1 Λειτουργίες βιβλιοθήκης TIM

// 恢复缺省配置
void TIM_DeInit(TIM_TypeDef* TIMx);

// 时基单元初始化
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

// 结构体变量赋一个默认值
void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

// 使能计数器---运行控制
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

// 使能中断输出---中断输出控制
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

/*-----------------时基单元的时钟选择---------*/
// 选择内部时钟
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);

// 选择ITRx其他定时器的时钟
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);

// 选择TIx捕获通道的时钟
void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
                                uint16_t TIM_ICPolarity, uint16_t ICFilter);

// 选择ETR通过外部时钟模式1输入的时钟
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
                             uint16_t ExtTRGFilter);

// 选择ETR通过外部时钟模式2输入的时钟
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, 
                             uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);

/*--------------------------------------------------------*/
// 不是用来选择时钟的,单独用来配置ETR引脚的预分频器、极性、滤波参数的
void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
                   uint16_t ExtTRGFilter);

// 用来单独写预分频值的
void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);

// 用来改变计数器的计数模式
void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);

// 自动重装器预装功能配置
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

// 给计数器写入一个值
void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);

// 给自动重装器写入一个值
void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);

// 获取当前计数器的值
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);

// 获取当前的预分频器的值
uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);

/*-------------获取标志位和清除标志位的------------*/
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);