管理员
- 积分
- 165309
- 金钱
- 165309
- 注册时间
- 2010-12-1
- 在线时间
- 2108 小时
|
发表于 2013-10-16 18:55:59
|
显示全部楼层
给你个参考:
//串口1初始化
//clk:Fmaster时钟频率
//baud:波特率
void uart_init(u32 clk,u32 baud)
{
u16 baud_div=0;
//这里直接不设置IO模式了,IO保持复位状态,串口就可以很好的工作
//如果一定要设置:TX脚设置为上拉输入;RX设置为开漏输出,就可以了.
CLK->CKENR1|=1<<2; //开启UART1时钟
UART1->CR1|=0<<4; //8位数据长度
UART1->CR1|=0<<2; //无奇偶校验
UART1->CR2|=1<<2; //串口接收使能
UART1->CR2|=1<<3; //串口发送使能
#if EN_USART1_RX
UART1->CR2|=1<<5; //串口接收中断使能
#endif
UART1->CR3|=0<<4; //1个停止位
UART1->CR5|=0<<3; //全双工模式
baud_div=(clk*1000000)/baud;//计算分频因子
UART1->BRR2=baud_div&0X0F; //低4位
UART1->BRR2|=(baud_div&0XF000)>>8; //高4位
UART1->BRR1=(baud_div&0X0FF0)>>4; //中间8位
UART1->CR1|=0<<5; //UART1使能
ITC_Set(UART1_RX_VECTOR,3); //优先级3,最高
} |
|