我需要将USART的波特率设置为9600以从PC接收数据。然后我需要将其更改为300以将数据发送到其他设备。 AVR可以使用不同的波特率吗?
答案 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
}