📄 access_extended_sram.c
字号:
unsigned int read,
// 读取操作的访问地址低位指针数值
unsigned int write,
// 写入操作的访问地址低位指针数值
const unsigned char data_size)
// 每次访问操作的地址个数(数据长度)
{
unsigned int data_times; // 返回的次数值整数变量
data_times = 0x01;
if (read_h > write_h) // 说明写入操作已越过访问地址高位的终止地址
{
while (read_h != write_h)
{
if (read >= (IN_all_data_end_size - data_size))
{
data_times++; // 次数值+1
read = (IN_all_data_start_size + data_size)-(IN_all_data_end_size - read);
if (read_h == IN_all_data_h_end_size)
{
read_h = (IN_all_data_h_start_size + 1) - 1;
}
read_h++;
}
data_times++; // 次数值+1
read = read + data_size; // 读取操作的访问地址低位+数据长度
}
if (read >= write)
{
data_times--; // 次数值-1,以抵消上面最后一个+1
read = read - data_size; // 读取操作的访问地址低位-数据长度
if (read >= write)
{
read = read - write;
read = (unsigned int)data_size - read;
}
else
{
data_times++; // 次数值+1
read = write - read;
}
}
else
{
while (read <= (write - data_size))
{
data_times++; // 次数值+1
read = read + data_size;
}
data_times++; // 次数值+1
read = write - read;
}
}
else if (read_h < write_h)
{
while (read_h != write_h)
{
if (read >= (IN_all_data_end_size - data_size))
{
data_times++; // 次数值+1
read = (IN_all_data_start_size + data_size)-(IN_all_data_end_size - read);
read_h++;
}
data_times++; // 次数值+1
read = read + data_size;
}
if (read >= write)
{
data_times--; // 次数值-1,以抵消上面最后一个+1
read = read - data_size;
if (read >= write)
{
read = read - write;
read = (unsigned int)data_size - read;
}
else
{
data_times++; // 次数值+1
read = write - read;
}
}
else
{
while (read <= (write - data_size))
{
data_times++; // 次数值+1
read = read + data_size;
}
data_times++; // 次数值+1
read = write - read;
}
}
else
{
if (read > write)
{
while (read_h == write_h)
{
if (read >= (IN_all_data_end_size - data_size))
{
data_times++; // 次数值+1
read = (IN_all_data_start_size + data_size)-(IN_all_data_end_size - read);
if (read_h == IN_all_data_h_end_size)
{
read_h = (IN_all_data_h_start_size + 1) - 1;
}
read_h++;
}
data_times++; // 次数值+1
read = read + data_size;
}
while (read_h != write_h)
{
if (read >= (IN_all_data_end_size - data_size))
{
data_times++; // 次数值+1
read = (IN_all_data_start_size + data_size)-(IN_all_data_end_size - read);
if (read_h == IN_all_data_h_end_size)
{
read_h = (IN_all_data_h_start_size + 1) - 1;
}
read_h++;
}
data_times++; // 次数值+1
read = read + data_size;
}
if (read >= write)
{
data_times--; // 次数值-1,以抵消上面最后一个+1
read = read - data_size;
if (read >= write)
{
read = read - write;
read = (unsigned int)data_size - read;
}
else
{
data_times++; // 次数值+1
read = write - read;
}
}
else
{
while (read <= (write - data_size))
{
data_times++; // 次数值+1
read = read + data_size;
}
data_times++; // 次数值+1
read = write - read;
}
}
else
{
while (read <= (write - data_size))
{
data_times++; // 次数值+1
read = read + data_size;
}
data_times++; // 次数值+1
read = write - read;
}
}
OUT_data_size_remainder = OUT_data_size_remainder;// 阻止编译器产生警告消息
OUT_data_size_remainder = read; // 最后一次的数据个数计数器等于余数
return (data_times); // 返回的次数整数值
}
/*
********************************************************************************************
本C语言源程序文件到此结束
********************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -