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;
|