论坛元老
- 积分
- 3071
- 金钱
- 3071
- 注册时间
- 2018-2-7
- 在线时间
- 285 小时
|
发表于 2019-9-9 15:44:47
|
显示全部楼层
- #define CHECK_NONE_ONE_STOP 0 //无校验位 1个停止位 1有效 0 无效
- #define CHECK_NONE_TWO_STOP 0 //无校验位 2个停止位 1有效 0 无效
- #define CHECK_EVEN 1 //偶数校验 1有效 0 无效
- #define CHECK_ODD 0 //奇数校验 1有效 0 无效
- void Uart1_Init( unsigned int baudrate )
- {
- unsigned int baud;
- baud = 16000000 / baudrate;
- Uart1_IO_Init();
- #if CHECK_NONE_ONE_STOP // 如果 CHECK_NONE_ONE_STOP 为真
- UART1_CR1 = 0x00; //CR1 M=0 无校验位 设置M字长=0, 起始位|8位数据位|结束位 无校验
- UART1_CR3_bit.STOP = 0; //一个停止位
- #elif CHECK_NONE_TWO_STOP
- UART1_CR1 = 0x00; //CR1 M=0 无校验位 设置M字长=0, 起始位|8位数据位|结束位 无校验
- UART1_CR3_bit.STOP = 2; //两个停止位
- #elif CHECK_ODD
- UART1_CR1 = 0x16; //CR1 M=1 有校验位 设置M字长=1,起始位|8位数据位|奇偶校验位|结束位 奇校验odd
- #elif CHECK_EVEN
- UART1_CR1 = 0x14; //CR1 M=1 有校验位 设置M字长,起始位|8位数据位|奇偶校验位|结束位 偶校验even
- #endif
- UART1_CR2 = 0;
- UART1_BRR2 = ( unsigned char )( ( baud & 0xf000 ) >> 8 ) | ( ( unsigned char )( baud & 0x000f ) );
- UART1_BRR1 = ( ( unsigned char )( ( baud & 0x0ff0 ) >> 4 ) );
- UART1_CR2_bit.REN = 1; //接收使能
- UART1_CR2_bit.TEN = 1; //发送使能
- UART1_CR2_bit.RIEN = 1; //接收中断使能
- }
复制代码
|
|