初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2019-9-9
- 在线时间
- 20 小时
|
10金钱
今天在调试的时候发现一个神奇的现象,就是数组指针在函数中操作赋值后,直接采用串口发送, 如不进行取址再指向的话,那么发送出去的串口数据就是0x00,百思不得其解,想来和朋友们一起讨论一下原因
代码如下:
void tx_volt_data(u8 *pu8data, u16 u16volt)
{
pu8data[0] = 0xFE;
pu8data[1] = 0xFE;
pu8data[2] = (uint8_t)(u16volt>>8);
pu8data[3] = (uint8_t)u16volt;
pu8data[4] = 0xD0;
for( f = 0; f< 5; f++)
{
UART0_SendData8(*(&pu8data[f]));
while(!(UART0_SendFlag)); //等待发送完成
UART0_SendFlag = 0;
}
}
如果写成 UART0_SendData8(pu8data[f]);的话,发送的数据都是0,只有上述写法才能发送出正确的数据,这是为什么呢?感觉两个应该是同一个地址值,用VS测试了一下是没错的,不太理解哈哈
|
|