Hephaestus 发表于 2022-8-11 20:44 之所以传入指针,是因为方便写入多个数据,595级联过去,一次要写入几个数据,传值进去不太方便,传指针进去,就是变量的地址,我在函数里面做了右移的操作,改变了原始的值,后面改成用一个临时变量来操作右移 |
这个帖子并没有结束,最关键的问题楼主还是没有搞清楚。 在c语言里面,正常的做法是传值,如果是传指针,就是希望指针指向的值要被改变。 任何一本c语言教科书,关于函数都是从printf和scanf开始讲的吧?这个两个函数一个是传值,一个是传指针,为什么??? |
这帖子可以结束了 |
卧槽,没仔细看,C51的我改过了,用了一个临时变量,传递指针变量,所以C51的测试可以,打扰了。。。 void HC595_COM1_WR_NByte(uint8_t Len, uint8_t *GPIOValue) { uint8_t i=0,Byte=0; while(Len--) { Byte=*GPIOValue; HC595_COM1_STCP_RESET(); for(i=0;i<8;i++) { HC595_COM1_SHCP_RESET(); if(Byte & 0x80) { HC595_COM1_DS_SET(); } else { HC595_COM1_DS_RESET(); } HC595_COM1_SHCP_SET(); Byte <<= 1; } HC595_COM1_STCP_SET(); GPIOValue++; } } |