我使用带有RS232的PIC18f2455的USART,并且配置有些麻烦。
我正在使用24 MHz晶体振荡器。 PLL使能预分频器为6(在输入端设置为4MHz),并在输出端提供固定的96 MHz。 后分频器设置为6,最后为微控制器时钟提供16MHz。
使用此时钟,我将OpenUSART功能的SPBRG设置为25,波特率为9600.
这是我的USART配置:
#pragma config PLLDIV = 6, CPUDIV = OSC4_PLL6, USBDIV = 2, FOSC = HSPLL_HS
OpenUSART(USART_TX_INT_ON & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW, 25);
它正陷入OpenUSART功能......
答案 0 :(得分:1)
对于16MHz微控制器时钟更改USART_BRGH_LOW, 25
到USART_BRGH_HIGH, 103
,这将导致9,615.38 baud (9600 -0.2%)。为什么不使用CPUDIV = OSC1_PLL2
为您提供48 MHz时钟?然后,您使用USART_BRGH_LOW, 77
。