Warning
This page is located in archive.

USART - Sériová linka

 
#include "stm32f4xx.h"
 
// nastaveni bitu registru
#define  setBit(reg, bit) ((reg) |= (1<SR,7))
// nulovani bitu registru
#define  clrBit(reg, bit) ((reg) &= ~(1<<bit))
// inverze bitu
#define  tglBit(reg, bit) ((reg) ^= (1<<bit))
// cteni bitu
#define  readBit(reg, bit) ((reg) & (1<<bit))
 
void sendChar (int ch)  {
  while (!readBit(USART2->SR,7)); 
  USART2->DR = ch;
}
 
/*
 * Inicializace serioveho rozhrani USART2
 * USART2 je pripojeny na sbernici APB1
 */
void serial2Init(void){        // USART2 je pripojeny k USB
  setBit(RCC->APB1ENR, 17);    // Povoleni hodin na UART2
  setBit(USART2->CR1, 13);    // Povoleni rozhrani USART2
  setBit(USART2->CR1, 2);    // Povoleni prijmu
  setBit(USART2->CR1, 3);    // Povoleni odesilani
  USART2->BRR =  ?; // Nastaveni rychlosti na ?
 
  setBit(RCC->AHB1ENR, 0);    // nastaveni hodin portu A
  setBit(GPIOA->MODER, 5);    // Alternativni funkce pro PA.2
  setBit(GPIOA->MODER, 7);    // Alternativni funkce pro PA.3
 
  GPIOA->AFR[0] = ?;// Nastaveni alternativni funkce pro USART2
}
 
int main(void)
{
  int i;
  // inicializace seriove linky
  serial2Init();
  while (1)
  {
    for(i=0;i<500000;i++);
    sendChar('x');
  }
}

courses/b2m37mam/priklady/stm32/03-usart.txt · Last modified: 2023/09/07 15:16 by nentvond