微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请高手帮我解析一段程序

请高手帮我解析一段程序

时间:10-02 整理:3721RD 点击:

int8 UartWrite(const void *buff, int8 len)

{

    int8 i, end;

    const uint8 *src;

    /* 获取实际可写入长度 */

    EA = 0;

    i = ComSta.txtop - ComSta.txbtm;

    EA = 1;                  

    if (i < 0) {

        i += TX_BUFF_SIZE;

    }

    i = TX_BUFF_SIZE - i;

    if (len > i) {

        return 0;

    }

    /* 拷贝数据到缓冲区中 */

    src = (const uint8 *)buff;

    i = ComSta.txtop;

    end = i + len;

    if (end < TX_BUFF_SIZE) {

        for (; i<end; i++) {

            TxBuff = *src++;

        }

    }

    else {

        for (; i<TX_BUFF_SIZE; i++) {

            TxBuff = *src++;

        }

        end -= TX_BUFF_SIZE;

        for (i=0; i<end; i++) {

            TxBuff = *src++;

        }

    }

    /* 修改缓冲区指向信息 */

    EA = 0;

    if (ComSta.txbtm == ComSta.txtop) {

        TI = 1;

    }

    ComSta.txtop = end;

    EA = 1;

    return len;

}

请高手帮我解析一下这个串口写入数据的程序,特别是  src = (const uint8 *)buff这句是什么意思   (const uint8 *)是类型强制转换的意思吗。


const void *buff 可以被强制类型转换成任意类型的只读指针,即指针指向的变量只读,但buff的值可变。
至于程序的解析,注释已经很清楚了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top