请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 您好!
在阅读 TIvAware 库文档和一些示例代码时、我看到传递给 UARTConfigSetExpClk 函数的 UART 时钟是 SysCtlClockGet ()返回的值、但在我的情况下、这不起作用、我想知道原因。
我将系统时钟配置为:
/*设置系统时钟*/ ROM_SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
然后、在 UART 配置步骤中、我必须手动将 UART 时钟设置为16000000才能正常工作:
ROM_UARTConfigSetExpClk (UART0_BASE、16000000、115200、 (UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE |UART_CONFIG_WLEN_8);
因为如果我使用 SysCtlClockGet()而不是16000000、波特率设置不正确、并且我通过串行端口接收垃圾
ROM_UARTConfigSetExpClk (UART0_BASE、SysCtlClockGet ()、115200、 (UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE |UART_CONFIG_WLEN_8);//这似乎未正确设置 BAUDRATE
有人能解释一下为什么,如果我使用 SysCtlClockGet () (它实际上返回40000000),它不起作用吗? 我认为 UART 外设时钟与系统时钟相同。
谢谢