每次修改时钟和波特率的时候,记得修改#define
#define Sys_Clk 4 //系统时钟
#define Baud_Uart1 9600//串口1的波特率
#define Baud_Uart3 2400//串口3的波特率
#define Baud_Uart1 9600//串口1的波特率
#define Baud_Uart3 2400//串口3的波特率
//uart1 串口1
#if Sys_Clk ==2
#if Baud_Uart1 == 9600
UART1_BRR2 = 0x00; //2MHz下波特率9600
UART1_BRR1 = 0x0D; //2M/9600=208 208/16=0x00D0
#elif Baud_Uart1 == 2400
UART1_BRR2 = 0x01; //2MHz下波特率2400
UART1_BRR1 = 0x34; //2M/2400=833 833/16=0x0341
#endif
#elif Sys_Clk ==4
#if Baud_Uart1 == 9600
UART1_BRR2 = 0x00; //4MHz下波特率9600
UART1_BRR1 = 0x1A; //4M/9600=416 416/16=0x01A0
#elif Baud_Uart1 == 2400
UART1_BRR2 = 0x08; //4MHz下波特率2400
UART1_BRR1 = 0x06; //4M/2400=1666.6 1666.6/16=0x0068
#endif
#elif Sys_Clk == 8
#if Baud_Uart1 == 9600
UART1_BRR2 = 0x04; //8MHz下波特率9600
UART1_BRR1 = 0x03; //8M/9600=833.3 833.3/16=0x0034
#elif Baud_Uart1 == 2400
UART1_BRR2 = 0x05; //8MHz下波特率2400
UART1_BRR1 = 0xD0; //8M/9600=3333 3333/16=0x0D05
#endif
#endif
UART1_CR1 = 0x14; //一个起始位 8位字长 偶校验 使能UART
UART1_CR3 = 0x20; //2个停止位
UART1_CR2 = 0x6c; //发送,接收使能,开接收中断,开发送中断
//uart3 串口3
#if Sys_Clk ==2
#if Baud_Uart3 == 9600
UART3_BRR2 = 0x00; //2MHz下波特率9600
UART3_BRR1 = 0x0D; //2M/9600=208 208/16=0x00D0
#elif Baud_Uart3 == 2400
UART3_BRR2 = 0x01; //2MHz下波特率2400
UART3_BRR1 = 0x34; //2M/2400=833 833/16=0x0341
#endif
#elif Sys_Clk ==4
#if Baud_Uart3 == 9600
UART3_BRR2 = 0x00; //4MHz下波特率9600
UART3_BRR1 = 0x1A; //4M/9600=416 416/16=0x01A0
#elif Baud_Uart3 == 2400
UART3_BRR2 = 0x08; //4MHz下波特率2400
UART3_BRR1 = 0x06; //4M/2400=1666.6 1666.6/16=0x0068
#endif
#elif Sys_Clk == 8
#if Baud_Uart3 == 9600
UART3_BRR2 = 0x04; //8MHz下波特率9600
UART3_BRR1 = 0x03; //8M/9600=833.3 833.3/16=0x0034
#elif Baud_Uart3 == 2400
UART3_BRR2 = 0x05; //8MHz下波特率2400
UART3_BRR1 = 0xD0; //8M/9600=3333 3333/16=0x0D05
#endif
#endif
UART3_CR1 = 0x14; //一个起始位 8位字长 偶校验 使能UART
UART3_CR3 = 0x20; //2个停止位
UART3_CR2 = 0x6c; //发送,接收使能,开接收中断,开发送中断
#if Sys_Clk ==2
#if Baud_Uart1 == 9600
UART1_BRR2 = 0x00; //2MHz下波特率9600
UART1_BRR1 = 0x0D; //2M/9600=208 208/16=0x00D0
#elif Baud_Uart1 == 2400
UART1_BRR2 = 0x01; //2MHz下波特率2400
UART1_BRR1 = 0x34; //2M/2400=833 833/16=0x0341
#endif
#elif Sys_Clk ==4
#if Baud_Uart1 == 9600
UART1_BRR2 = 0x00; //4MHz下波特率9600
UART1_BRR1 = 0x1A; //4M/9600=416 416/16=0x01A0
#elif Baud_Uart1 == 2400
UART1_BRR2 = 0x08; //4MHz下波特率2400
UART1_BRR1 = 0x06; //4M/2400=1666.6 1666.6/16=0x0068
#endif
#elif Sys_Clk == 8
#if Baud_Uart1 == 9600
UART1_BRR2 = 0x04; //8MHz下波特率9600
UART1_BRR1 = 0x03; //8M/9600=833.3 833.3/16=0x0034
#elif Baud_Uart1 == 2400
UART1_BRR2 = 0x05; //8MHz下波特率2400
UART1_BRR1 = 0xD0; //8M/9600=3333 3333/16=0x0D05
#endif
#endif
UART1_CR1 = 0x14; //一个起始位 8位字长 偶校验 使能UART
UART1_CR3 = 0x20; //2个停止位
UART1_CR2 = 0x6c; //发送,接收使能,开接收中断,开发送中断
//uart3 串口3
#if Sys_Clk ==2
#if Baud_Uart3 == 9600
UART3_BRR2 = 0x00; //2MHz下波特率9600
UART3_BRR1 = 0x0D; //2M/9600=208 208/16=0x00D0
#elif Baud_Uart3 == 2400
UART3_BRR2 = 0x01; //2MHz下波特率2400
UART3_BRR1 = 0x34; //2M/2400=833 833/16=0x0341
#endif
#elif Sys_Clk ==4
#if Baud_Uart3 == 9600
UART3_BRR2 = 0x00; //4MHz下波特率9600
UART3_BRR1 = 0x1A; //4M/9600=416 416/16=0x01A0
#elif Baud_Uart3 == 2400
UART3_BRR2 = 0x08; //4MHz下波特率2400
UART3_BRR1 = 0x06; //4M/2400=1666.6 1666.6/16=0x0068
#endif
#elif Sys_Clk == 8
#if Baud_Uart3 == 9600
UART3_BRR2 = 0x04; //8MHz下波特率9600
UART3_BRR1 = 0x03; //8M/9600=833.3 833.3/16=0x0034
#elif Baud_Uart3 == 2400
UART3_BRR2 = 0x05; //8MHz下波特率2400
UART3_BRR1 = 0xD0; //8M/9600=3333 3333/16=0x0D05
#endif
#endif
UART3_CR1 = 0x14; //一个起始位 8位字长 偶校验 使能UART
UART3_CR3 = 0x20; //2个停止位
UART3_CR2 = 0x6c; //发送,接收使能,开接收中断,开发送中断