Σύγκριση μεταξύ Αισθητήρας θερμοκρασίας PT100 ανιχνευτής και Μονάδα DS18B20
1) Βασική αρχή της απόκτησης σήματος
① Η αντίσταση του PT100 αλλάζει αναλογικά με τη θερμοκρασία (Όσο υψηλότερη είναι η θερμοκρασία, Όσο μεγαλύτερη είναι η αντίσταση), Αλλά η αλλαγή αντίστασης είναι πολύ μικρή, για 0.385 Ω / βαθμός;
② Το εύρος μέτρησης θερμοκρασίας του PT100 είναι -200℃ -200℃, και στους 0℃, η αντίσταση είναι ακριβώς ίση με 100 Ω;
③ Το ρεύμα λειτουργίας του PT100 πρέπει να είναι μικρότερο από 5 α;
④ Αν και η αντίσταση του PT100 αλλάζει αναλογικά με τη θερμοκρασία, ρυθμό μεταβολής του (ήτοι, K τιμή K τιμή K τιμή) διαφέρει σε διαφορετικά εύρη θερμοκρασίας.
2) Πίνακας αλλαγής αντίστασης θερμοκρασίας PT100
3. Κύκλωμα κίνησης PT100
1) Μέσω της μεθόδου διαίρεσης τάσης, Η AD συλλέγει την τάση PT100 για να αποκτήσει τιμή αντίστασης για τον υπολογισμό της θερμοκρασίας
Η τιμή αντίστασης του PT100 σε νερό σε θερμοκρασία δωματίου (25℃25℃25℃) είναι περίπου 109.89 Ω.
Ο μικροελεγκτής εξάγει τάση 3,3 V, και η τάση διαιρούμενη με PT100 είναι περίπου:
109.89 ∗ 0.005 = 0.54945 V
Η τιμή AD που μετατρέπεται σύμφωνα με τον τύπο μετατροπής AD είναι περίπου:
0.54945 / 3.3 ∗ 4096 = 681.98 ≈ 682
Όταν η θερμοκρασία ανέβει κατά ένα βαθμό, υποθέτοντας ότι η αντίσταση του PT100 μόλις αυξάνεται κατά 0.385 Ω, η τιμή μεταβολής της διαιρεμένης τάσης είναι περίπου ίση με:
0.385 ∗ 0.005 = 0.001925 V
Η τιμή AD που μετατρέπεται σύμφωνα με τον τύπο μετατροπής AD είναι περίπου:
0.001925 / 3.3 ∗ 4096 = 2.39 ≈ 2
Στο πείραμα, διαπιστώθηκε ότι λόγω της ασταθούς τάσης 3,3V του τροφοδοτικού stm32, το ADC συγκέντρωσε διακυμάνσεις τάσης PT100 και το σφάλμα διαίρεσης τάσης ήταν μεγάλο. Η λύση βελτιστοποίησης είναι ο σχεδιασμός ενός κυκλώματος πηγής σταθερού ρεύματος. Με τη συλλογή της τάσης του PT100 και του ρεύματος της πηγής σταθερού ρεύματος, μπορεί να επιτευχθεί η αντίσταση του PT100, και στη συνέχεια μπορεί να ληφθεί η τιμή θερμοκρασίας.
2) Κύκλωμα πηγής σταθερού ρεύματος με βάση τον ρυθμιστή LDO (MD5333)
Υπάρχουν πολλά κυκλώματα οδήγησης για τη δοκιμή PT100 στο Διαδίκτυο, όπως το κύκλωμα γέφυρας DC, κύκλωμα πηγής σταθερού ρεύματος που βασίζεται σε λειτουργικό ενισχυτή, και τα λοιπά. Ο συγγραφέας αφιέρωσε επίσης πολύ χρόνο στην επιλογή του κυκλώματος οδήγησης, λαμβάνοντας υπόψη τη δυσκολία κατασκευής του πίνακα και τον αριθμό των εξαρτημάτων, και τελικά επέλεξε το κύκλωμα πηγής σταθερού ρεύματος με βάση τον ρυθμιστή LDO (MD5333). Το διάγραμμα κυκλώματος έχει ως εξής:
Σε αυτό το σημείο, η επιλογή υλικού έχει ουσιαστικά ολοκληρωθεί. Η πλακέτα ανάπτυξης που χρησιμοποιείται είναι η Zhengdian Atom F10ZET6 Elite Board
Μονάδα DS18B20
Για να ελέγξετε τη σύγκριση θερμοκρασίας σε πραγματικό χρόνο και θερμοκρασίας PT100, η μονάδα DS18B20 προστίθεται για τη δοκιμή σύγκρισης βαθμονόμησης
1) Εισαγωγή στο DS18B20
Ο DS18B20 είναι ένας αισθητήρας θερμοκρασίας ενός διαύλου με εύρος θερμοκρασίας δοκιμής -55~+125℃ και ακρίβεια ±0,5℃. Η θερμοκρασία πεδίου μεταδίδεται απευθείας με ψηφιακό τρόπο ενός διαύλου, γεγονός που βελτιώνει πολύ την ικανότητα κατά των παρεμβολών του συστήματος. Μπορεί να διαβάσει απευθείας τη μετρούμενη θερμοκρασία, και μπορεί να πραγματοποιήσει μια μέθοδο ανάγνωσης ψηφιακών τιμών 9~12 bit μέσω απλού προγραμματισμού σύμφωνα με τις πραγματικές απαιτήσεις. Το εύρος τάσης λειτουργίας του είναι 3~5,5V, και χρησιμοποιεί μια ποικιλία μορφών συσκευασίας, καθιστώντας τη ρύθμιση του συστήματος ευέλικτη και βολική. Η καθορισμένη ανάλυση και η θερμοκρασία συναγερμού που έχει ορίσει ο χρήστης αποθηκεύονται στο EEPROM και εξακολουθούν να αποθηκεύονται μετά από διακοπή ρεύματος.
2) Εισαγωγή στον χρονισμό εργασίας DS18B20
Όλες οι συσκευές ενός διαύλου απαιτούν αυστηρό χρονισμό σήματος για τη διασφάλιση της ακεραιότητας των δεδομένων. Το DS18B20 έχει 6 τύπους σημάτων: επαναφορά παλμού, παλμός απόκρισης, γράφω 0, γράφω 1, ανάγνωση 0 και διάβασε 1. Όλα αυτά τα σήματα, εκτός από τον παλμό απόκρισης, είναι σύγχρονα σήματα που αποστέλλονται από τον κεντρικό υπολογιστή. Και όλες οι εντολές και τα δεδομένα αποστέλλονται με το χαμηλό bit του byte πρώτα.
① Επαναφορά παλμού και παλμού απόκρισης
Όλες οι επικοινωνίες στον ενιαίο δίαυλο ξεκινούν με μια ακολουθία αρχικοποίησης. Ο κεντρικός υπολογιστής εξάγει ένα χαμηλό επίπεδο και διατηρεί το χαμηλό επίπεδο για τουλάχιστον 480 us για να δημιουργήσει έναν παλμό επαναφοράς. Στη συνέχεια ο οικοδεσπότης αφήνει το λεωφορείο, και η αντίσταση έλξης 4,7Κ τραβάει ψηλά το μονό δίαυλο, με χρόνο καθυστέρησης 15~60us, και εισέρχεται στη λειτουργία λήψης (Rx). Στη συνέχεια, το DS18B20 τραβάει το δίαυλο χαμηλά για 60~240 us για να δημιουργήσει έναν παλμό απόκρισης χαμηλού επιπέδου.
② Συγγραφή χρονισμού
Ο χρόνος εγγραφής περιλαμβάνει εγγραφή 0 χρονισμός και γράψτε 1 συγχρονισμός. Όλοι οι χρονισμοί εγγραφής απαιτούν τουλάχιστον 60 us, και απαιτείται τουλάχιστον 1 us χρόνος ανάκτησης μεταξύ δύο ανεξάρτητων χρονισμών εγγραφής. Και οι δύο χρονισμοί εγγραφής ξεκινούν με τον οικοδεσπότη να κατεβάζει το λεωφορείο. Γράφω 1 συγχρονισμός: ο κεντρικός υπολογιστής βγάζει χαμηλό επίπεδο, καθυστερήσεις για 2 us, και μετά απελευθερώνει το λεωφορείο, καθυστέρηση 60 us. Γράφω 0 συγχρονισμός: ο κεντρικός υπολογιστής βγάζει χαμηλό επίπεδο, καθυστερήσεις για 60 us, και μετά απελευθερώνει το λεωφορείο με καθυστέρηση 2 us.
③ Διαβάστε το χρονοδιάγραμμα
Οι συσκευές ενός διαύλου μεταδίδουν δεδομένα στον κεντρικό υπολογιστή μόνο όταν ο κεντρικός υπολογιστής εκδίδει χρονισμό ανάγνωσης. Επομένως, αφού ο κεντρικός υπολογιστής εκδώσει μια εντολή ανάγνωσης δεδομένων, πρέπει να δημιουργηθεί αμέσως ένας χρονισμός ανάγνωσης, έτσι ώστε ο εξαρτημένος να μπορεί να μεταδίδει δεδομένα. Όλοι οι χρονισμοί ανάγνωσης απαιτούν τουλάχιστον 60 us, και απαιτείται τουλάχιστον 1 us χρόνος ανάκτησης μεταξύ δύο ανεξάρτητων χρονισμών ανάγνωσης. Κάθε χρονισμός ανάγνωσης ξεκινά από τον κεντρικό υπολογιστή, που κατεβάζει το λεωφορείο για τουλάχιστον 1 η. Ο κεντρικός υπολογιστής πρέπει να απελευθερώσει το δίαυλο κατά τη διάρκεια του χρονισμού ανάγνωσης και να δοκιμάσει την κατάσταση του διαύλου εντός 15 us μετά την έναρξη του χρονισμού. Η τυπική διαδικασία χρονισμού ανάγνωσης είναι: ο κεντρικός υπολογιστής εξάγει καθυστέρηση χαμηλού επιπέδου 2 us, τότε ο κεντρικός υπολογιστής μεταβαίνει σε καθυστέρηση λειτουργίας εισόδου 12 us, στη συνέχεια διαβάζει το τρέχον επίπεδο του μεμονωμένου διαύλου, και μετά καθυστερεί 50 us.
Αφού κατανοήσουμε τη χρονομέτρηση ενός λεωφορείου, Ας ρίξουμε μια ματιά στην τυπική διαδικασία ανάγνωσης θερμοκρασίας του DS18B20. Η τυπική διαδικασία ανάγνωσης θερμοκρασίας του DS18B20 είναι: επαναφορά → αποστολή SKIPROM (0xCC) → αποστολή εντολής έναρξης μετατροπής (0x44) → καθυστέρηση → επαναφορά → αποστολή εντολής SKIPROM (0xCC) → εντολή αποστολής μνήμης (0xBE) → διαβάστε δύο byte δεδομένων (δηλαδή. θερμοκρασία) συνεχώς → τέλος.
3) Σχηματικό διάγραμμα και διαμόρφωση CUBEMAX
Από το σχηματικό διάγραμμα, φαίνεται ότι το DS18B20 είναι ενεργοποιημένο από τη θύρα PG11 για να ανοίξει τη σειριακή θύρα για εκτύπωση πληροφοριών θερμοκρασίας
4) Κωδικός τμήμα
Το τμήμα κώδικα μεταμοσχεύει τη βιβλιοθήκη ds18b20 του Zhengdian Atom και κάνει μικρές τροποποιήσεις
#ifndef __DS18B20_H
#ορίστε __DS18B20_H
#συμπεριλαμβάνω “tim.h”
/***********************************************************************************/
/* Ορισμός ακίδων DS18B20 */
#ορίστε DS18B20_DQ_GPIO_PORT GPIOG
#ορισμός DS18B20_DQ_GPIO_PIN GPIO_PIN_11
#ορίστε DS18B20_DQ_GPIO_CLK_ENABLE() κάνω{ __HAL_RCC_GPIOG_CLK_ENABLE(); }ενώ(0) /* Ενεργοποίηση ρολογιού θύρας PG */
/**********************************************************************************************/
/* Λειτουργία λειτουργίας IO */
#ορίστε DS18B20_DQ_OUT(x) κάνω{ x ? \
HAL_GPIO_WritePin(DS18B20_DQ_GPIO_PORT, DS18B20_DQ_GPIO_PIN, GPIO_PIN_SET) : \
HAL_GPIO_WritePin(DS18B20_DQ_GPIO_PORT, DS18B20_DQ_GPIO_PIN, GPIO_PIN_RESET); \
}ενώ(0) /* Έξοδος θύρας δεδομένων */
#ορίστε το DS18B20_DQ_IN HAL_GPIO_ReadPin(DS18B20_DQ_GPIO_PORT, DS18B20_DQ_GPIO_PIN) /* Είσοδος θύρας δεδομένων */
uint8_t ds18b20_init(κενός); /* Εκκινήστε το DS18B20 */
uint8_t ds18b20_check(κενός); /* Ελέγξτε εάν υπάρχει το DS18B20 */
σύντομη ds18b20_get_temperature(κενός);/* Πάρτε θερμοκρασία */
#endif
5. Μονάδα τηλεχειριστηρίου υπερύθρων
1) Πρωτόκολλο κωδικοποίησης ασύρματης μονάδας
Οι ευρέως χρησιμοποιούμενες μέθοδοι κωδικοποίησης για τηλεχειριστήριο υπερύθρων είναι: Πρωτόκολλο NEC του PWM (διαμόρφωση πλάτους παλμού) και πρωτόκολλο RC-5 της Philips PPM (διαμόρφωση θέσης παλμού). Το τηλεχειριστήριο που συνοδεύει την πλακέτα ανάπτυξης χρησιμοποιεί το πρωτόκολλο NEC, που έχει τα ακόλουθα χαρακτηριστικά:
1. 8-διεύθυνση bit και μήκος εντολής 8 bit;
2. Η διεύθυνση και η εντολή μεταδίδονται δύο φορές (για να διασφαλιστεί η αξιοπιστία);
3. Διαμόρφωση θέσης παλμού PWM, με τον κύκλο λειτουργίας του μεταδιδόμενου φορέα υπερύθρων να αντιπροσωπεύει “0” και “1”;
4. Η συχνότητα φορέα είναι 38Khz;
5. Ο χρόνος bit είναι 1,125 ms ή 2,25 ms;
Στο πρωτόκολλο NEC, πώς να ορίσετε τα δεδομένα στο πρωτόκολλο σε ‘0’ ή "1"? Εδώ, ο δέκτης υπέρυθρων και ο πομπός υπερύθρων διαχωρίζονται.
Πομπός υπερύθρων: Αποστολή δεδομένων πρωτοκόλλου «0» = 560 us μετάδοσης σήματος φορέα + 560μας χωρίς μετάδοση σήματος φορέα
Αποστολή δεδομένων πρωτοκόλλου «1» = 560 us μετάδοσης σήματος φορέα + 1680μας χωρίς μετάδοση σήματος φορέα
Ο ορισμός bit του πομπού υπερύθρων φαίνεται στο παρακάτω σχήμα
Δέκτης υπέρυθρων: Λήψη δεδομένων πρωτοκόλλου «0» = χαμηλό επίπεδο 560 us + 560μας υψηλού επιπέδου
Λήψη δεδομένων πρωτοκόλλου «1» = χαμηλό επίπεδο 560 us + 1680μας υψηλού επιπέδου
Η μορφή δεδομένων της εντολής τηλεχειριστηρίου NEC είναι: τερματικό συγχρονισμού, κωδικός διεύθυνσης, αντίστροφος κωδικός διεύθυνσης, κωδικός ελέγχου, έλεγχος αντίστροφος κώδικας. Ο κώδικας συγχρονισμού αποτελείται από ένα χαμηλό επίπεδο 9ms και ένα υψηλό επίπεδο 4,5ms. Ο κωδικός διεύθυνσης, αντίστροφος κωδικός διεύθυνσης, κωδικός ελέγχου, και ο αντίστροφος κώδικας ελέγχου είναι όλες μορφές δεδομένων 8-bit. Αποστέλλονται με τη σειρά χαμηλού bit πρώτο και υψηλό bit τελευταίο. Ο αντίστροφος κωδικός χρησιμοποιείται για την αύξηση της αξιοπιστίας της μετάδοσης.
Επομένως, Η λήψη εισόδου μπορεί να χρησιμοποιηθεί για τη μέτρηση του πλάτους παλμού του υψηλού επιπέδου για την επίτευξη αποκωδικοποίησης τηλεχειρισμού.
2) Σχηματικό διάγραμμα και διαμόρφωση CUBEMAX
Από το σχηματικό διάγραμμα, μπορούμε να δούμε ότι η ασύρματη μονάδα είναι ενεργοποιημένη μέσω του ακροδέκτη PB9 και συλλέγεται μέσω του 4 κανάλια του TIM4:
Η προεπιλεγμένη ακίδα του TIM4_CH4 δεν είναι PB9, οπότε πρέπει να ρυθμιστεί χειροκίνητα, και η ρύθμιση διακοπής ενεργοποιείται ταυτόχρονα
3) Κωδικός τμήμα
Αποτυπώστε την ανερχόμενη άκρη μέσω της λειτουργίας επιστροφής κλήσης tim
Αυτή τη στιγμή, μπορεί να ληφθεί το αποκωδικοποιημένο σήμα:
Αυτή τη στιγμή, τα δεδομένα είναι πιο περίπλοκα και μπορούν να υποστούν ελαφρά επεξεργασία:
Το αποτέλεσμα είναι το εξής:
Τα δύο τελευταία ψηφία είναι ο αποκωδικοποιημένος και ο αντίστροφος κωδικός του. Αυτή τη στιγμή, μπορεί να οριστεί ως μακροεντολή για τη ρύθμιση του κατωφλίου θερμοκρασίας:
Το αποτέλεσμα είναι το εξής:
Κωδικός ανταλλακτικού υπερύθρων:
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ Κεφαλίδα */
/**
******************************************************************************
* @αρχείο : κύρια.γ
* @σύντομος : Κύριο σώμα προγράμματος
******************************************************************************
* @Προσοχή
*
* <h2><κέντρο>&αντίγραφο; Πνευματική ιδιοκτησία (ντο) 2024 STMicroelectronics.
* Με την επιφύλαξη παντός δικαιώματος.</κέντρο></h2>
*
* Αυτό το στοιχείο λογισμικού αδειοδοτείται από την ST με άδεια χρήσης 3 ρήτρας BSD,
* ο “Αδεια”; Δεν μπορείτε να χρησιμοποιήσετε αυτό το αρχείο παρά μόνο σε συμμόρφωση με το
* Αδεια. Μπορείτε να αποκτήσετε αντίγραφο της Άδειας στη διεύθυνση:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ Κεφαλίδα */
/* Περιλαμβάνει ——————————————————————*/
#συμπεριλαμβάνω “κύρια.χ”
#συμπεριλαμβάνω “tim.h”
#συμπεριλαμβάνω “usart.h”
#συμπεριλαμβάνω “gpio.h”
/* Ιδιωτικό περιλαμβάνει ———————————————————-*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ Περιλαμβάνει */
#συμπεριλαμβάνω “stdio.h”
#συμπεριλαμβάνω “χορδή.χ”
#ορίστε το MAXUP 157
#ορίστε MAXDOWN 87
#ορίστε MINUP 221
#ορίστε το MINDOWN 61
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ Περιλαμβάνει */
/* Ιδιωτικό typedef ———————————————————–*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ BEGIN PTD */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ PTD */
/* Ιδιωτικός ορισμός ————————————————————*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ PD */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ Π.Δ */
/* Ιδιωτική μακροεντολή ————————————————————-*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ ΜΜ */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ ΜΜ */
/* Ιδιωτικές μεταβλητές ———————————————————*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ ΦΒ */
uint32_t upCount=0;
uint16_t ValueUp=0;
uint16_t ValueDown=0;
uint8_t isUpCapt=1;
uint16_t πλάτος=0;
buffer uint16_t[128]={0};
uint16_t bufferId=0;
uint8_t rcvFalg=0;
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ ΦΒ */
/* Πρωτότυπα ιδιωτικής λειτουργίας ———————————————–*/
void SystemClock_Config(κενός);
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ PFP */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ PFP */
/* Ιδιωτικός κωδικός χρήστη ———————————————————*/
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ 0 */
άκυρο HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
upCount++;
}
άκυρο HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
αν(isUpCapt)//Εάν είναι σύλληψη ανερχόμενης άκρης
{
ValueUp=HAL_TIM_ReadCapturedValue(χτιμ χτιμ,TIM_CHANNEL_4);
isUpCapt=0;
__HAL_TIM_SET_CAPTUREPOLARITY(χτιμ χτιμ,TIM_CHANNEL_4, TIM_ICPOLARITY_FALLING);
upCount=0;
}
αλλού{
ValueDown=HAL_TIM_ReadCapturedValue(χτιμ χτιμ,TIM_CHANNEL_4);
isUpCapt=1;
__HAL_TIM_SET_CAPTUREPOLARITY(χτιμ χτιμ,TIM_CHANNEL_4, TIM_ICPOLARITY_RISING);
width=ValueDown+upCount*65536-ValueUp;
αν(πλάτος>4400&&πλάτος<4600)
{
bufferId=0;
ρυθμιστής[bufferId++]=πλάτος;
}
αλλιώς αν(bufferId>0)
{
ρυθμιστής[bufferId++]=πλάτος;
αν(bufferId>32)
{
rcvFalg=1;
bufferId=0;
}
}
}
}
άκυρο bitBuffer2num(χαρ αρ[])
{
αρ[0]=0;
αρ[1]=0;
αρ[2]=0;
αρ[3]=0;
για(int i=0;εγώ<32;i++)
{
αν(ρυθμιστής[i+1]<1000)
{
αρ[i/8]=αριθμ[i/8]<<1;
}
αλλού
{
αρ[i/8]=αριθμ[i/8]<<1;
αρ[i/8]|=0x01;
}
}
}
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ 0 */
/**
* @brief Το σημείο εισόδου της εφαρμογής.
* @retval ενθ
*/
int main(κενός)
{
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ 1 */
char printbuff[128]={0};
χαρ αρ[4]={0};
κλειδί char=0;
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ 1 */
/* Διαμόρφωση MCU——————————————————–*/
/* Επαναφορά όλων των περιφερειακών, Εκκινεί τη διεπαφή Flash και το Systick. */
HAL_Init();
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ Αρχή */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ Αρχή */
/* Διαμορφώστε το ρολόι του συστήματος */
SystemClock_Config();
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ BEGIN SysInit */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ SysInit */
/* Αρχικοποιήστε όλα τα διαμορφωμένα περιφερειακά */
MX_GPIO_Init();
MX_TIM4_Init();
MX_USART1_UART_Init();
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ 2 */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ 2 */
/* Άπειρος βρόχος */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΕΝΑΡΞΗ */
HAL_GPIO_TogglePin(LED0_GPIO_Θύρα,LED0_Pin);
HAL_TIM_Base_Start_IT(&htim4);//Η ενημέρωση χρονοδιακόπτη δημιουργεί μια διακοπή
HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_4);//
ενώ (1)
{
αν(rcvFalg)
{
για(int i=0;εγώ<4;i++)
{
bitBuffer2num(αρ);
σπριντφ(printbuff,”0xx “,αρ[εγώ]);
HAL_UART_Transmit(&huart1, printbuff,στρέν(printbuff),HAL_MAX_DELAY);
}
// σπριντφ(printbuff,”%u “,ρυθμιστής[εγώ]);
// HAL_UART_Transmit(&huart1, printbuff,στρέν(printbuff),HAL_MAX_DELAY);
// }
HAL_UART_Transmit(&huart1,”\r\n”,2,HAL_MAX_DELAY);
rcvFalg=0;
}
εκτύπωση(“%d\r\n”,αρ[3]);
αν(αρ[3]==157)
{
εκτύπωση(“111111\r\n”);
}
HAL_Καθυστέρηση(1000);
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ ΕΝΩ */
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΑΡΧΗ 3 */
}
/* ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ ΤΕΛΟΣ 3 */
}
/**
* @brief Διαμόρφωση ρολογιού συστήματος
* @retval Κανένα
*/
void SystemClock_Config(κενός)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt









