τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Η σειριακή θύρα STM32 είναι αρκετά πλούσια και διαθέτει ισχυρές λειτουργίες. Μπορεί να παρέχει έως και 5 σειριακές θύρες, με γεννήτρια κλασματικού ρυθμού baud, υποστήριξη οπτικής επικοινωνίας μίας γραμμής και επικοινωνίας μίας γραμμής ημι-αμφίδρομης επικοινωνίας, υποστήριξη LIN, πρωτόκολλο έξυπνης κάρτας και προδιαγραφές IrDA SIRENDEC (υποστηρίζεται μόνο από τη σειριακή θύρα 3), DMA , και τα λοιπά.
Η πιο βασική ρύθμιση της σειριακής θύρας είναι η ρύθμιση του ρυθμού baud. Η σειριακή θύρα STM32 είναι αρκετά απλή στη χρήση Εφόσον ενεργοποιείτε το ρολόι της σειριακής θύρας, ρυθμίζετε τη λειτουργία της αντίστοιχης θύρας IO και, στη συνέχεια, διαμορφώνετε τον ρυθμό baud, το μήκος bit δεδομένων, το bit ισοτιμίας και άλλες πληροφορίες. το. Παρακάτω, θα παρουσιάσουμε εν συντομία αυτούς τους καταχωρητές που σχετίζονται άμεσα με τη βασική διαμόρφωση της σειριακής θύρας.
1. Ενεργοποιήστε το σειριακό ρολόι θύρας. Ως περιφερειακό του STM32, το ρολόι της σειριακής θύρας ελέγχεται από τον καταχωρητή ενεργοποίησης της περιφερειακής συσκευής. Η σειριακή θύρα 1 που χρησιμοποιούμε εδώ είναι το bit 14 του καταχωρητή APB2ENR. Εκτός από την ενεργοποίηση ρολογιού της σειριακής θύρας 1 στον καταχωρητή APB2ENR, τα bit ενεργοποίησης ρολογιού άλλων σειριακών θυρών είναι όλα στο APB1ENR.
2. Επαναφορά σειριακής θύρας . Όταν παρουσιαστεί μια ανωμαλία σε ένα περιφερειακό, το περιφερειακό μπορεί να μηδενιστεί ρυθμίζοντας το αντίστοιχο bit στον καταχωρητή επαναφοράς και, στη συνέχεια, το περιφερειακό μπορεί να διαμορφωθεί εκ νέου για να λειτουργήσει ξανά.Γενικά, όταν το σύστημα διαμορφώσει για πρώτη φορά περιφερειακά, θα το κάνει πρώτα
Εκτελέστε μια λειτουργία για να επαναφέρετε αυτό το περιφερειακό. Η επαναφορά της σειριακής θύρας 1 επιτυγχάνεται με τη διαμόρφωση του bit 14 του καταχωρητή APB2RSTR.
3. Ρύθμιση ρυθμού baud σειριακής θύρας. Κάθε σειριακή θύρα έχει τον δικό της ανεξάρτητο καταχωρητή ρυθμού baud USART BRR Ρυθμίζοντας αυτόν τον καταχωρητή, μπορείτε να διαμορφώσετε διαφορετικούς ρυθμούς baud. Οι περιγραφές bit αυτού του καταχωρητή είναι οι εξής:
4. Έλεγχος σειριακής θύρας. Κάθε σειριακή θύρα του STM32 έχει τρεις καταχωρητές ελέγχου USART CR1~3 Πολλές διαμορφώσεις της σειριακής θύρας ορίζονται μέσω αυτών των τριών καταχωρητών.
5. Αποστολή και λήψη δεδομένων. Η αποστολή και η λήψη του STM32 πραγματοποιείται μέσω του καταχωρητή δεδομένων USART _DR Αυτός είναι ένας διπλός καταχωρητής, συμπεριλαμβανομένων των δεδομένων TDR και RDR, όταν ληφθούν τα δεδομένα
χρόνο, αποθηκεύεται επίσης σε αυτόν τον καταχωρητή.
Μπορεί να φανεί ότι αν και είναι καταχωρητής 32 bit, χρησιμοποιούνται μόνο τα χαμηλότερα 9 bit (DR[8:0]) και τα άλλα είναι δεσμευμένα. Το DR[8:0] είναι δεδομένα σειριακής θύρας, συμπεριλαμβανομένων των δεδομένων αποστολής ή λήψης. Δεδομένου ότι αποτελείται από δύο καταχωρητές, έναν για αποστολή (TDR) και έναν για λήψη (RDR), αυτός ο καταχωρητής έχει λειτουργίες ανάγνωσης και εγγραφής. Ο καταχωρητής TDR παρέχει μια παράλληλη διεπαφή μεταξύ του εσωτερικού διαύλου και του καταχωρητή μετατόπισης εξόδου. Ο καταχωρητής RDR παρέχει μια παράλληλη διεπαφή μεταξύ του καταχωρητή μετατόπισης εισόδου και του εσωτερικού διαύλου.
Κατά τη μετάδοση με ενεργοποιημένο το bit ελέγχου (το μπιτ USART CR1 PCE έχει ρυθμιστεί), η τιμή που είναι γραμμένη στο MSB (το MSB είναι το 7ο ή το 8ο bit ανάλογα με το μήκος των δεδομένων) θα τροποποιηθεί με επόμενα μπιτ ελέγχου. Όταν το bit ισοτιμίας είναι ενεργοποιημένο για λήψη, το bit MSB που διαβάζεται είναι το ληφθέν bit ισοτιμίας.
6. Η κατάσταση της σειριακής θύρας μπορεί να διαβαστεί μέσω του καταχωρητή κατάστασης USART SR.
Εδώ εστιάζουμε σε δύο bit, τα bit 5 και 6 RXNE και TC.
RXNE (ο καταχωρητής δεδομένων ανάγνωσης δεν είναι κενός), όταν αυτό το bit έχει οριστεί σε 1, υποδεικνύει ότι τα δεδομένα έχουν ληφθεί και μπορούν να διαβαστούν. Αυτό που πρέπει να κάνουμε αυτή τη στιγμή είναι να διαβάσουμε το USART DR το συντομότερο δυνατό Διαβάζοντας το USART DR, μπορούμε να διαγράψουμε αυτό το bit ή να γράψουμε 0 σε αυτό το bit για να το διαγράψουμε απευθείας.
TC (η αποστολή ολοκληρώθηκε), όταν αυτό το bit έχει οριστεί, σημαίνει ότι τα δεδομένα στο USARTDR έχουν σταλεί. Εάν οριστεί η διακοπή για αυτό το bit, θα δημιουργηθεί μια διακοπή. Αυτό το bit έχει επίσης δύο μεθόδους εκκαθάρισης: 1: ανάγνωση USART SR και εγγραφή USARTDR. 2: Γράψτε το 0 απευθείας σε αυτό το bit.
- void uart_init(u32 pclk2,u32 bound)
- {
- float temp;
- u16 mantissar
- u16 fraction;
- temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
- mantissa=temp;//得到整数部分
- fraction=(temp-mantissa)*16://得到小数部分
- mantissa<<=4;
- mantissa+=fraction;
- RCC->APB2ENRI=1<<2;//使能PORTA口时钟
- RCC->APB2ENRI=1<<14;//使能串口时钟
- GPIOA->CRH&=0XFFFFF00F;
- GPIOA->CRH|=0X000008B0;//IO状态设置
- RCC->APB2RSTRI=1<<14;//复位串口1
- RCC->APB2RSTR&=~(1<<14)://停止复位
- //波特率设置
- USART1->BRR=mantissa;//波特率设置
- USART1->CR1|=0X200C;//1位停止,无校验位,
-
- USART1->CR1|=1<<8;//PE中断使能
- USART1->CR11=1<<5;//接收缓冲区非空中断使能
- MY_NVIC_Init(3,3,USART1 IRQChannel,2);//组2,最低优先级
- }
Αρχικοποιήστε τη συσκευή υλικού σειριακής θύρας και ενεργοποιήστε τις διακοπές:
Βήματα διαμόρφωσης:
(1) Ενεργοποιήστε τα ρολόγια του GPI0 και του USART1
(2) Ρυθμίστε τη λειτουργία GPI0 των δύο ακίδων USART1
(3) Διαμορφώστε τη μορφή δεδομένων USART1, τον ρυθμό baud και άλλες παραμέτρους
(4) Ενεργοποιήστε τη λειτουργία διακοπής λήψης USART1
(5) Τέλος, ενεργοποιήστε τη λειτουργία USART1