研究生
最后登录1970-1-1
在线时间 小时
注册时间2018-1-4
|
20火花
本帖最后由 如花 于 2018-4-6 19:21 编辑
程序是这样的:
- for (i=0; i<Length; i++)
- {
- Data = Send_Receive_Data(Dummy);
- *pData = Data;
- printf("\n 函数中的Data %d = 0x%x, *pData %d = 0x%x", i, Data ,i, *pData);
- pData++;
复制代码 打印Data的值和*pData的值,通过USART显示出来的结果是这样的:
按照常理来说,程序中已经把Data的值赋给了*pData,此时*pData的值应该和Data的值一样是0xff才对。
不知道为什么实际上两个值不一样,而且*pData会显示一些奇怪的数字呢?
会不会是指向错误呢?
完整程序是这样的,不过对解决问题影响不大:
- void Read_Data(uint32_t Address, uint8_t* pData, uint32_t Length)
- {
- int i;
- uint8_t Addr[3],Data;
-
- GPIO_ResetBits(GPIOF, GPIO_Pin_6); //拉低片选线,通信开始
-
- Send_Receive_Data(0x03); //0x03是Read Data的命令(Data Sheet第28页)
- Addr[0] = (Address >> 16) & 0xFF; //由于是MSB先行,所以Addr[0]是最高的8位
- Addr[1] = (Address >> 8) & 0xFF;
- Addr[2] = Address & 0xFF;
-
- Send_Receive_Data(Addr[0]);
- Send_Receive_Data(Addr[1]);
- Send_Receive_Data(Addr[2]);
-
- for (i=0; i<Length; i++)
- {
- Data = Send_Receive_Data(Dummy);
- *pData = Data;
- printf("\n 函数中的Data %d = 0x%x, *pData %d = 0x%x", i, Data ,i, *pData);
- pData++;
复制代码
|
最佳答案
查看完整内容
uint8_t* pData 是形参,不可以通过实参来改变它的值
|