为什么我们需要使用这个公式计算波特率,
波特= fCK /(16 * USARTDIV)
我的意思是,为什么我们不能直接在USART_BRR寄存器中写入9600或任何其他所需的波特率值?为什么我们需要先执行此计算。无论如何我们在这里计算什么?
这可能是一个愚蠢的问题,但我真的很困惑。请帮忙。
提前致谢!
答案 0 :(得分:4)
您不能将所需的波特率写入寄存器,因为处理器不知道时钟对该外设的速度有多快,因此无法正确设置分频器。
有可能做一个你可以告诉波特率的usart,但需要额外的复杂性,并且仍然需要知道它的时钟有多快。
答案 1 :(得分:3)
您没有配置软件,而是硬件。这意味着,您设置的位(或多或少)直接连接到时钟分频器,后者控制UART模块的波特率。
例如,您必须在计算中使用fck。想象一下,UART模块必须自己计算fck。问题是,fck是所有使用的时钟分频器的结果,没有集中配置。计算硬件中的fck 的努力将是不成比例的(努力=成本)。让用户计算它会更容易。