2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Le port série STM32 est assez riche et possède des fonctions puissantes. Il peut fournir jusqu'à 5 ports série, avec générateur de débit en bauds fractionnaire, prendre en charge la communication optique monoligne et la communication monoligne semi-duplex, prendre en charge LIN, le protocole de carte à puce et la spécification IrDA SIRENDEC (uniquement pris en charge par le port série 3), DMA. , etc.
Le paramètre le plus élémentaire du port série est le paramètre de débit en bauds. Le port série STM32 est assez simple à utiliser. Tant que vous activez l'horloge du port série, définissez le mode du port IO correspondant, puis configurez le débit en bauds, la longueur des bits de données, le bit de parité et d'autres informations, vous pouvez utiliser. il. Ci-dessous, nous présenterons brièvement ces registres directement liés à la configuration de base du port série.
1. Activez l'horloge du port série. En tant que périphérique du STM32, l'horloge du port série est contrôlée par le registre d'activation permanente du périphérique. Le port série 1 que nous utilisons ici est le bit 14 du registre APB2ENR. À l'exception de l'activation de l'horloge du port série 1 dans le registre APB2ENR, les bits d'activation de l'horloge des autres ports série se trouvent tous dans APB1ENR.
2. Réinitialisation du port série . Lorsqu'une anomalie se produit dans un périphérique, le périphérique peut être réinitialisé en réglant le bit correspondant dans le registre de réinitialisation, puis le périphérique peut être reconfiguré pour le faire fonctionner à nouveau.Généralement, lorsque le système configure les périphériques pour la première fois, il
Effectuez une opération pour réinitialiser ce périphérique. La réinitialisation du port série 1 est réalisée en configurant le bit 14 du registre APB2RSTR.
3. Réglage du débit en bauds du port série. Chaque port série possède son propre registre de débit en bauds indépendant USART BRR. En définissant ce registre, vous pouvez configurer différents débits en bauds. Les descriptions des bits de ce registre sont les suivantes :
4. Contrôle du port série. Chaque port série du STM32 dispose de trois registres de contrôle USART CR1 ~ 3. De nombreuses configurations du port série sont définies via ces trois registres.
5. Envoi et réception de données. L'envoi et la réception de STM32 sont réalisés via le registre de données USART _DR. Il s'agit d'un double registre, comprenant TDR et RDR. Lors de l'écriture des données dans ce registre, le port série les envoie automatiquement.
temps, il est également stocké dans ce registre.
On voit que bien qu'il s'agisse d'un registre de 32 bits, seuls les 9 bits inférieurs (DR[8:0]) sont utilisés et les autres sont réservés. DR[8:0] correspond aux données du port série, y compris les données envoyées ou reçues. Puisqu'il est composé de deux registres, un pour l'émission (TDR) et un pour la réception (RDR), ce registre possède à la fois des fonctions de lecture et d'écriture. Le registre TDR fournit une interface parallèle entre le bus interne et le registre à décalage de sortie. Le registre RDR fournit une interface parallèle entre le registre à décalage d'entrée et le bus interne.
Lors de la transmission avec le bit de contrôle activé (le bit USART CR1 PCE est activé), la valeur écrite dans le MSB (le MSB est le 7ème ou le 8ème bit selon la longueur des données) sera modifiée par le remplacement des bits de contrôle ultérieurs. Lorsque le bit de parité est activé pour la réception, le bit MSB lu est le bit de parité reçu.
6. L'état du port série peut être lu via le registre d'état USART SR.
Ici, nous nous concentrons sur deux bits, les bits 5 et 6 RXNE et TC.
RXNE (le registre des données lues n'est pas vide), lorsque ce bit est mis à 1, il indique que les données ont été reçues et peuvent être lues. Ce que nous devons faire à ce moment-là, c'est lire l'USART DR dès que possible. En lisant l'USART DR, nous pouvons effacer ce bit, ou nous pouvons écrire 0 sur ce bit pour l'effacer directement.
TC (envoi terminé), lorsque ce bit est activé, cela signifie que les données dans USARTDR ont été envoyées. Si l'interruption pour ce bit est définie, une interruption sera générée. Ce bit a également deux méthodes d'effacement : 1 : lire USART SR et écrire USARTDR. 2 : Écrivez 0 directement sur ce 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,最低优先级
- }
Initialisez le périphérique matériel du port série et activez les interruptions :
Étapes de configuration :
(1) Allumez les horloges de GPI0 et USART1
(2) Définissez le mode GPI0 des deux broches USART1
(3) Configurez le format de données USART1, le débit en bauds et d'autres paramètres
(4) Activer la fonction d'interruption de réception USART1
(5) Enfin, activez la fonction USART1