zoukankan      html  css  js  c++  java
  • 串口--USART1

    寄存器中波特率的算法

    TX/RX波特率=fck/(16*USARTDIV)
    fck:串口时钟频率
    TX/RX波特率:用户设置的波特率,即串口发送数据的实际波特率,如9600、115200等
    USARTDIV:写入到波特率寄存器中的数值,是一个浮点数
    1.计算:fck=72000000Hz
                  TX/RX波特率=9600

     2.串口的配置过程

    (1)Usart_Init()

    {

      1.GPIO口配置:复用推挽输出、浮空输入

      2.USART配置:USART_Init()、USART_Cmd();波特率、数据位、校验位、停止位、无硬件控制流、收发模式

    }

    (2)串口接收函数Usart_Rx()

    {

      1.while()//判断接收数据寄存器非空标志--等待接收,当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位。0--未转移完

      while((USART1->SR &(1<<5))==0);或是while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);

      2.返回接收的数据

      RxData=USART_ReceiveData(USART1);return RxData;

      或者是return USART1->DR;

    }

    (3)串口发送函数Usart_Tx(data)

    {

      1.//发送完成---0:发送还未完成;

           while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

      2.发送接收的数据USART_SendData(USART1,TxData);或者USART1->DR = data;

    }

    (4)回显函数

    {

      先接收:同接收函数

      再发送:同发送函数

    }

    (5)重定义fputc

    //往串口输出--在串口上显示
    int fputc(int c, FILE * stream)
    {
    //判断上次数据是否发送完成
    while((USART1->SR &(1<<7))==0);
    USART1->DR = c;
    return c;
    }

    方法二:

    //重定向c库函数printf到串口,重定向后可使用printf函数
    int fputc(int ch, FILE *f)
    {
    /* 发送一个字节数据到串口 */
    USART_SendData(DEBUG_USARTx, (uint8_t) ch);

    /* 等待发送完毕 */
    while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);

    return (ch);
    }

    ///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
    int fgetc(FILE *f)
    {
    /* 等待串口输入数据 */
    while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);

    return (int)USART_ReceiveData(DEBUG_USARTx);
    }

    。。。。。。。这里面涉及到了SR寄存器的6位和7位的不同,一个是判断全部完成,一个位6是数据寄存器数据发送完成,但移位寄存器未将数据发送完成,两者进行读写判断时都可以。

  • 相关阅读:
    spring_150803_service
    spring_150803_component
    spring_150802_resource
    spring_150801_autowired_qualifier
    Axis2学习的第一天
    Axis学习的第一天
    JQuery的第一天实战学习
    HDU1020 Encoding 简单队列
    HDU1412 {A} + {B} 简单队列
    HDU1896 Stones 简单队列
  • 原文地址:https://www.cnblogs.com/juan-4-14/p/12976645.html
Copyright © 2011-2022 走看看