uint32_t怎么转为uint8_t?
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 *??
谢谢。
把uint32_t 分成4个uint8_t 还需要保留原来的数据啊,那就自己写一个函数,转换呗!!!! 直接强制转换,转换后数据长度为四个字节,注意是小端模式 指针随便转,只要记住指针就是地址,STM32中地址都是32位的,并且Flash和RAM统一寻址,没有区别。
uint32_t * 指针加一的话,地址增4; uint8_t *指针加一的话,地址增1,仅此而已。 本帖最后由 toofree 于 2017-6-19 23:57 编辑
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main()
{
uint32_t a32=0x01234567;
uint32_t * p32;
uint8_t * p8;
uint8_t a8;
p32 = &a32;
p8 = (uint8_t *)p32;
printf("0x%08X\n",a32);
printf("\n");
printf("0x%02X\n",*((uint8_t *)p32+0));
printf("0x%02X\n",*((uint8_t *)p32+1));
printf("0x%02X\n",*((uint8_t *)p32+2));
printf("0x%02X\n",*((uint8_t *)p32+3));
printf("\n");
printf("0x%02X\n",*(p8+0));
printf("0x%02X\n",*(p8+1));
printf("0x%02X\n",*(p8+2));
printf("0x%02X\n",*(p8+3));
printf("\n");
a8 = *(p8+0);
a8 = *(p8+1);
a8 = *(p8+2);
a8 = *(p8+3);
printf("0x%02X\n",a8);
printf("0x%02X\n",a8);
printf("0x%02X\n",a8);
printf("0x%02X\n",a8);
printf("\n");
return 0;
}
printf的话可以直接用输出32位的,库函数输出的时候,入口些微HAL_UART_Transmit(uart1,&a,4,1000);
页:
[1]