minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
A porta serial STM32 é bastante rica e possui funções poderosas. Ele pode fornecer até 5 portas seriais, com gerador de taxa de transmissão fracionada, suporte para comunicação óptica de linha única e comunicação de linha única half-duplex, suporte para LIN, protocolo de cartão inteligente e especificação IrDA SIRENDEC (suportado apenas pela porta serial 3), DMA , etc.
A configuração mais básica da porta serial é a configuração da taxa de transmissão. A porta serial STM32 é bastante simples de usar, desde que você ligue o relógio da porta serial, defina o modo da porta IO correspondente e, em seguida, configure a taxa de transmissão, comprimento do bit de dados, bit de paridade e outras informações, você pode usar. isto. A seguir apresentaremos brevemente esses registros diretamente relacionados à configuração básica da porta serial.
1. Habilite o relógio da porta serial. Como periférico do STM32, o clock da porta serial é controlado pelo registrador sempre habilitado do periférico. A porta serial 1 que usamos aqui é o bit 14 do registrador APB2ENR. Exceto pela habilitação de clock da porta serial 1 no registro APB2ENR, os bits de habilitação de clock de outras portas seriais estão todos em APB1ENR.
2. Redefinição da porta serial . Quando ocorre uma anormalidade em um periférico, o periférico pode ser reinicializado definindo o bit correspondente no registro de redefinição e, em seguida, o periférico pode ser reconfigurado para fazê-lo funcionar novamente.Geralmente, quando o sistema configura periféricos pela primeira vez, ele primeiro
Execute uma operação para redefinir este periférico. O reset da porta serial 1 é obtido configurando o bit 14 do registro APB2RSTR.
3. Configuração da taxa de transmissão da porta serial. Cada porta serial possui seu próprio registro de taxa de transmissão independente USART BRR. Ao definir este registro, você pode configurar diferentes taxas de transmissão. As descrições dos bits deste registro são as seguintes:
4. Controle de porta serial. Cada porta serial do STM32 possui três registros de controle USART CR1 ~ 3. Muitas configurações da porta serial são definidas por meio desses três registros.
5. Envio e recebimento de dados. O envio e recebimento do STM32 é realizado através do registrador de dados USART _DR. Este é um registrador duplo, incluindo TDR e RDR. Ao gravar dados neste registrador, a porta serial os enviará automaticamente.
tempo, ele também é armazenado neste registro.
Pode-se observar que embora seja um registrador de 32 bits, apenas os 9 bits inferiores (DR[8:0]) são utilizados, sendo os demais reservados. DR[8:0] são dados da porta serial, incluindo dados enviados ou recebidos. Por ser composto por dois registradores, um de envio (TDR) e outro de recebimento (RDR), este registrador possui funções de leitura e escrita. O registrador TDR fornece uma interface paralela entre o barramento interno e o registrador de deslocamento de saída. O registrador RDR fornece uma interface paralela entre o registrador de deslocamento de entrada e o barramento interno.
Ao transmitir com o bit de paridade habilitado (o bit USART CR1 PCE está definido), o valor escrito no MSB (MSB é o 7º ou 8º bit dependendo do comprimento dos dados) será modificado pela substituição subsequente dos bits de paridade. Quando o bit de paridade está habilitado para recepção, o bit MSB lido é o bit de paridade recebido.
6. O status da porta serial pode ser lido através do registro de status USART SR.
Aqui nos concentramos em dois bits, bits 5 e 6 RXNE e TC.
RXNE (registro de dados de leitura não está vazio), quando este bit é definido como 1, indica que os dados foram recebidos e podem ser lidos. O que precisamos fazer neste momento é ler o USART DR o mais rápido possível. Ao ler o USART DR, podemos limpar esse bit ou podemos escrever 0 neste bit para limpá-lo diretamente.
TC (envio concluído), quando este bit está energizado significa que os dados em USARTDR foram enviados. Se a interrupção para este bit for definida, uma interrupção será gerada. Este bit também possui dois métodos de compensação: 1: ler USART SR e escrever USARTDR. 2: Escreva 0 diretamente neste 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,最低优先级
- }
Inicialize o dispositivo de hardware da porta serial e habilite as interrupções:
Etapas de configuração:
(1) Ligue os relógios GPI0 e USART1
(2) Defina o modo GPI0 dos dois pinos USART1
(3) Configure o formato de dados USART1, taxa de transmissão e outros parâmetros
(4) Habilite a função de interrupção de recepção USART1
(5) Finalmente habilite a função USART1