[STM32F2] 32位的数组与8位的指针数组

[复制链接]
6217|10
 楼主| 602884796 发表于 2014-12-3 19:13 | 显示全部楼层 |阅读模式
定义了数组u32 buffer[100];
现在 我想用函数u16  USART2_PushByte(u16 Len ,u8 *Buff),将上面的数组发送出去,主要是函数的形参
u8 *Buff  这里怎么写啊??
写成USART2_PushByte(12,buffer),
    或USART2_PushByte(12,&buffer[0]),都不行
  或者u8 *p;    p=buffer; USART2_PushByte(12,p)这样编译没问题,但是运**死在下面的函数中了
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}
mmuuss586 发表于 2014-12-3 20:44 | 显示全部楼层
USART2_PushByte(12,buffer);
这样就可以;
并把buffer定义成8位的看看;

评分

参与人数 1威望 +4 收起 理由
602884796 + 4

查看全部评分

 楼主| 602884796 发表于 2014-12-3 21:03 | 显示全部楼层
mmuuss586 发表于 2014-12-3 20:44
USART2_PushByte(12,buffer);
这样就可以;
并把buffer定义成8位的看看;

貌似我没说清楚,,数据为32位的数组,而函数只支持8位的指针。  刚查资料 发现 这样就可以了(u8 *)pSPI.edatabuf)
bear1 发表于 2014-12-3 21:53 来自手机 | 显示全部楼层
602884796 发表于 2014-12-3 21:03
貌似我没说清楚,,数据为32位的数组,而函数只支持8位的指针。  刚查资料 发现 这样就可以了(u8 *)pSPI. ...

pSPI.edatabuf 是什么?
diweo 发表于 2014-12-4 08:19 | 显示全部楼层
本帖最后由 diweo 于 2014-12-4 08:22 编辑

buffer是32位指针,把它强制转型为8位指针就可以。
USART2_PushByte(12,(u8*)buffer);

这里是数组,每个元素都是u32。其实即使是结构体,里面的元素类型不一定一样的,也可以用这种方法访问它的任一个字节。

评分

参与人数 1威望 +4 收起 理由
602884796 + 4 赞一个!

查看全部评分

电子云图 发表于 2014-12-4 09:36 | 显示全部楼层
实现;
void  USART2_PushBuf(u8 *Buff, u16 Len )
{
  u8 i;
  for(i=0; i<len; i++)
  {
     USART2_SendByte(*(Buff + i));  /* 打比方,并非真正的函数 */
  }
}

调用;
USART((u8*)buf, (u16)len);




评分

参与人数 1威望 +4 收起 理由
602884796 + 4

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部