你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

uint32_t怎么转为uint8_t?

[复制链接]
tryfly 提问时间:2017-6-19 14:48 /
uint32_t怎么转为uint8_t?

芯片:stm32f412zg
目的:用随机数生成器,得到随机数,然后发送到串口。

随机数生成函数是
HAL_StatusTypeDef    HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t *random32bit)



串口发送函数是
HAL_StatusTypeDef     HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)


问题:请问怎么把生成的uint32_t *转化为  uint8_t *??
谢谢。


收藏 评论7 发布时间:2017-6-19 14:48

举报

7个回答
wamcncn 回答时间:2017-6-19 16:41:57
把uint32_t 分成4个uint8_t
MrJiu 回答时间:2017-6-19 16:52:33
还需要保留原来的数据啊,那就自己写一个函数,转换呗!!!!
黑皮男 回答时间:2017-6-19 21:01:46
直接强制转换,转换后数据长度为四个字节,注意是小端模式
七哥 回答时间:2017-6-19 23:35:04
指针随便转,只要记住指针就是地址,STM32中地址都是32位的,并且Flash和RAM统一寻址,没有区别。
uint32_t * 指针加一的话,地址增4; uint8_t *指针加一的话,地址增1,仅此而已。
七哥 回答时间:2017-6-19 23:51:19
本帖最后由 toofree 于 2017-6-19 23:57 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>

  4. int main()
  5. {
  6.     uint32_t a32=0x01234567;
  7.     uint32_t * p32;
  8.     uint8_t * p8;
  9.     uint8_t a8[4];

  10.     p32 = &a32;
  11.     p8 = (uint8_t *)p32;

  12.     printf("0x%08X\n",a32);
  13.     printf("\n");

  14.     printf("0x%02X\n",*((uint8_t *)p32+0));
  15.     printf("0x%02X\n",*((uint8_t *)p32+1));
  16.     printf("0x%02X\n",*((uint8_t *)p32+2));
  17.     printf("0x%02X\n",*((uint8_t *)p32+3));
  18.     printf("\n");

  19.     printf("0x%02X\n",*(p8+0));
  20.     printf("0x%02X\n",*(p8+1));
  21.     printf("0x%02X\n",*(p8+2));
  22.     printf("0x%02X\n",*(p8+3));
  23.     printf("\n");

  24.     a8[0] = *(p8+0);
  25.     a8[1] = *(p8+1);
  26.     a8[2] = *(p8+2);
  27.     a8[3] = *(p8+3);
  28.     printf("0x%02X\n",a8[0]);
  29.     printf("0x%02X\n",a8[1]);
  30.     printf("0x%02X\n",a8[2]);
  31.     printf("0x%02X\n",a8[3]);
  32.     printf("\n");

  33.     return 0;
  34. }
复制代码

傲游截图20170619235700.png

点评

不错很好  发表于 2019-10-19 11:29
废鱼 回答时间:2017-6-20 08:33:59
printf的话可以直接用输出32位的,库函数输出的时候,入口些微HAL_UART_Transmit(uart1,&a,4,1000);

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版