请高手帮我解析一段程序
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的值可变。
至于程序的解析,注释已经很清楚了。
