在AVR USART中设置两种不同的波特率

时间:2018-04-13 17:15:31

标签: avr usart

我需要将USART的波特率设置为9600以从PC接收数据。然后我需要将其更改为300以将数据发送到其他设备。 AVR可以使用不同的波特率吗?

2 个答案:

答案 0 :(得分:0)

  

AVR可以使用不同的波特率吗?

如果控制器有多个USART端口,则每个端口都可以以不同的波特率运行。 您也可以随时更改每个端口的波特率。从技术上讲,有一些小的陷阱,例如在传输正在进行时改变速度可能会破坏数据。

答案 1 :(得分:-1)

是。 你可以用this fllow来实现这样的东西:

#include <avr/io.h>
#define F_CPU 4000000

static void uart_9600(void)
{
  #define BAUD 9600
  #include <util/setbaud.h>
  UBRRH = UBRRH_VALUE;
  UBRRL = UBRRL_VALUE;
  #if USE_2X
  UCSRA |= (1 << U2X);
  #else
  UCSRA &= ~(1 << U2X);
  #endif
}

static void uart_38400(void)
{
  #undef BAUD  // avoid compiler warning
  #define BAUD 38400
  #include <util/setbaud.h>
  UBRRH = UBRRH_VALUE;
  UBRRL = UBRRL_VALUE;
  #if USE_2X
  UCSRA |= (1 << U2X);
  #else
  UCSRA &= ~(1 << U2X);
  #endif
}