MJM_WSY 发表于 2013-10-28 17:28
你理解我的意思!但是你的实现方式 有何代码?
串口的波特率大小,无非就是初值的大小,通过宏定义系统时钟自由选择初始值就可以了。
例如:
//#define SYS_CLOCK 8000000
#define SYS_CLOCK 16000000
#if SYS_CLOCK == 8000000
#define UART_BAUD_RATE (65536-(SYS_CLOCK/(32*(UINT32)19200))) // 19200
#elif SYS_CLOCK == 16000000
#define UART_BAUD_RATE (65536-(SYS_CLOCK/(32*38400))) // 38400
#elif
#error "BAUD RATE ERROR!"
#endif
这里只用到两种系统时钟,你可以随意发挥。
接下来就是装载初始值了:
RCAP2H = UART_BAUD_RATE>>8 ;
RCAP2L =UART_BAUD_RATE & 0xff;
TH2 = UART_BAUD_RATE>>8 ;
TL2 =UART_BAUD_RATE & 0xff;
|