初级会员

- 积分
- 144
- 金钱
- 144
- 注册时间
- 2017-10-7
- 在线时间
- 58 小时
|
1金钱
首先这是我用spi读寄存器的函数
我想用指针参数作为传输数据我采用了两种形式
定义一个变量传递变量地址(这种饭是成功了)
uint8_t DIZHI[2];
ReadRegister(0x06BD, &DIZHI[0], 2);
一种定义个指针直接传递指针地址(这种方式进入了HardFault_Handler)
uint8_t* DIZHI2[0];
ReadRegister(0x06BD,DIZHI2[0], 2);
通过一步步仿真我发现势函数这一步赋值导致的
for(i=0;i<length;i++)
{
data=spi_rw(0xFF);
}
我想问这两个传递参数都是地址我没搞明白为啥会有如此不同语法编译器也没报错?
大神求解
|
最佳答案
查看完整内容[请看2#楼]
uint8_t DIZHI[2];这样是有给数组DIZHI分配空间的,uint8_t* DIZHI2只是定义了一个指针并没有分配空间。你也可以再额外定义一个数组传递一下,如:
uint8_t DIZHI3[2];
uint8_t* DIZHI2 = DIZHI3;
ReadRegister(0x06BD, DIZHI2, 2);
|