美文网首页
stm32f103 5个串口寄存器版配置大全

stm32f103 5个串口寄存器版配置大全

作者: YuQiao0303 | 来源:发表于2019-07-15 18:03 被阅读0次

github 地址:https://github.com/YuQiao0303/stm32f103-uart1-5

串口 TX RX
1 PA9 PA10
2 PA2 PA3
3 PB10 PB11
4 PC10 PC11
5 PC12 PD2

测试结果截图:


测试结果截图

以串口2的初始化为例(其余代码详见github):

//----------------------------------------------------------串口2-------------------------------------------------------------//
void uart2_init(u32 pclk2,u32 bound)
{    
    float temp;
    u16 mantissa;
    u16 fraction;      
    temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
    mantissa=temp;               //得到整数部分
    fraction=(temp-mantissa)*16; //得到小数部分    
  mantissa<<=4;
    mantissa+=fraction; 
    
    RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  //RCC->APB2ENR 见中文参考手册 p70  port A - G的时钟使能 分别在第2-8位,USART1在14位
    RCC->APB1ENR|=1<<17;  //使能串口时钟 //RCC->APB1ENR 见中文参考手册 p72  USART2-5的时钟使能 分别在第17-20位
    
    /*CRL & CRH
    中文参考手册p113
     每个io口4位,
    低两位是mode:
    00输入,01输出10MHz,10输出2MHz,11输出50MHz,
    高两位是CNF:00模拟输入,01浮空输入 。10上拉下拉输入,11保留  ,
    00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式

串口配置时,RX为1000,TX为1011
    */
    GPIOA->CRL&=0XFFFF00FF;  
    GPIOA->CRL|=0X00008B00;//IO状态设置
    
    /*ODR p115
    似乎可以不用配置
    端口输出数据(可用来配置上拉下拉)
    串口配置时,RX为上拉输入,对应位配置为1
    */
    GPIOA->ODR|=1<<3;     
    /*
    p67
    APB1RSTR 的 第17-20分别是串口2-5的复位
    */
    RCC->APB1RSTR|=1<<17;   //复位串口2
    RCC->APB1RSTR&=~(1<<17);//停止复位         
    //波特率设置
    USART2->BRR=mantissa; // 波特率设置   
    USART2->CR1|=0X200C;  //1位停止,无校验位.
    //使能接收中断
    USART2->CR1|=1<<8;    //PE中断使能
    USART2->CR1|=1<<5;    //接收缓冲区非空中断使能         
    MY_NVIC_Init(0,1,USART2_IRQn,2);//组2,最低优先级 
}

各寄存器的用法可以在中文/英文参考手册中,搜索寄存器的名称,从而了解它如何配置

相关文章

网友评论

      本文标题:stm32f103 5个串口寄存器版配置大全

      本文链接:https://www.haomeiwen.com/subject/htnnkctx.html