问:简述SPI IIC UART接口的区别和各自收发数据的方法。 答:UART属于全双工通信,主机与从机之间至少需要三根线连接,分别是RX、TX和GND。SPI是全双工串行总线,由一个主机和多个从机组成,应有四根信号线:SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟)和CS(从使能),以CS选择从机。IIC是半双工通信,由两根信号线组成:SCL(时钟线)和SDA(数据线),以地址选择从机。
问:一个无序的长度为n的数组,找到最小的值,请用C语言编码实现以下函数int get_min(int* array, int n) {} 答:
int get_min(int* array, int n) {
int i;
int min = array[0];
for(i=1;i<n;i++){
if(array[i] < min){
min = array[i];
}
}
return min;
}
问:请实现内存复制函数void memcpy(void *dst,const void src,int size)。 答:dst是拷贝到的目的地址,src是拷贝的起始地址,size是拷贝多少个字节 由src指向的地址为起始地址的连续size个字节的数据,复制到以dst指向地址为起始地址的空间内。
void memcpy(void *dst,const void *src,int size){
if(size = 0){
printf("Invalid count number!\n");
return (void*)0;
}
if(src==NULL||dst==NULL){
return (void*)0;
}
if((unsigned int)dst == (unsigned int)src){
printf("The source is equal with the destanation!\n");
return dst;
}
char *d = (char*)dst;
const char* s = (const char*)src;
while(size--)
*d++ = *s++;
return dst;
|