打印
[STM32F2]

32位的数组与8位的指针数组

[复制链接]
5097|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 是什么?

使用特权

评论回复
5
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 赞一个!
6
电子云图| | 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

粉丝