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

uint32_t怎么转为uint8_t?

[复制链接]
sos博 提问时间: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个回答
wambob 回答时间:2017-6-19 16:41:57
把uint32_t 分成4个uint8_t
MrJiu 回答时间:2017-6-19 16:52:33
还需要保留原来的数据啊,那就自己写一个函数,转换呗!!!!
黑皮男 回答时间:2017-6-19 21:01:46
直接强制转换,转换后数据长度为四个字节,注意是小端模式
toofree 回答时间:2017-6-19 23:35:04
指针随便转,只要记住指针就是地址,STM32中地址都是32位的,并且Flash和RAM统一寻址,没有区别。
uint32_t * 指针加一的话,地址增4; uint8_t *指针加一的话,地址增1,仅此而已。
toofree 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版