zoukankan      html  css  js  c++  java
  • 8th 串口通信

      简单来说,依然只是设置好几个寄存器即可。

      按步骤分别是:

      1. 设置引脚相关寄存器 GPxCON、GPxUP

      2. 设置波特率寄存器 UBRDIVx

      3. 设置传输格式 ULCONx 

      4. 设置接受发送方式以及时钟源 UCONx

      5. 设置流控和FIFO UFCONx UMCONx

      相关配置代码如下:

      

     1 void uart0_init(void)
     2 {
     3     GPHCON     |=    0xa0;        //设置TX,RX引脚
     4     GPHUP       =    0x0c;        //设置为内部上拉方式
     5 
     6     UBRDIV0     =    UART_BRD;    //设置波特率
     7 
     8     ULCON0      =    0x03;        //设置传输格式 8位 无校验 0个停止位 
     9     
    10     UCON0       =    0x05;        //选择查询方式,以及时钟源选择为PCLK
    11     UFCON0      =    0x00;        // 不使用FIFO
    12     UMCON0      =    0x00;        // 不使用流控
    13     
    14 
    15 }

    关于接收和发送的查询方式,是通过UTRSTATx寄存器的

    UTRSTATx具体如下:

    主要是第0位与第2位。第0位是当接收缓存区接收到数据时,置1。第2位是当发送缓存区没有数据并且最后一个数据也发送出去时,置1.

     代码如下:

     1 void putc(unsigned char c)
     2 {
     3     /* 等待,直到发送缓冲区中的数据已经全部发送出去 */
     4     while (!(UTRSTAT0 & TXD0READY));
     5     
     6     /* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */
     7     UTXH0 = c;
     8 }
     9 
    10 /*
    11  * 接收字符
    12  */
    13 unsigned char getc(void)
    14 {
    15     /* 等待,直到接收缓冲区中的有数据 */
    16     while (!(UTRSTAT0 & RXD0READY));
    17     
    18     /* 直接读取URXH0寄存器,即可获得接收到的数据 */
    19     return URXH0;
    20 }

     其中 RXD0READY = 1 ,TXD0READY= 0b100 

  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/asam/p/6379753.html
Copyright © 2011-2022 走看看