|
/////////////////////////////////////////////////////////////////////////////
//将一块RAM刷一个统一的值
//ptr 指向用户需要刷值的数据块,可以是任何类型
//val 要刷的值
//len 数据块长度(以字节数为单位,而非有意义的原子数为单位)
/////////////////////////////////////////////////////////////////////////////
void RAMFILL(U8 len, U8 val, void *ptr)
{
U8 *p = (U8*)ptr ;
while(len--)
{
*p++ = val ;
}
}
如果用户使用这个函数来刷unsigned long int型数组,刷成全0xff.则
U32 buffer[10] ;
RAMFILL(sizeof(buffer), 0xff, buffer) ;
用watch窗口看函数单步执行时,buffer中按字节逐个刷成0xff.
如果不使用抽象数据类型,函数接口为void RAMFILL(U8 len, U8 val, U8 *ptr)
那么用户在刷buffer时必须做强制类型转换,如果buffer是个自定义类型数组,那么更容易出错. |
|