/** * @brief Paints exit button * @param hObj: button handle * @retval None */ static void _BuildFileName(void) { hRNG.Instance = RNG; __HAL_RCC_RNG_CLK_ENABLE(); HAL_RNG_Init(&hRNG); sprintf(FileName, "record-%04lu.wav", HAL_RNG_GetRandomNumber(&hRNG) % 10000); }
/** mbedtls_hardware_poll * @brief Get len bytes of entropy from the hardware RNG. * @param data pointer will be NULL * @param output pointer to the random generated bytes buffer * @param len input is the requested length of bytes to be generated * @param olen is the pointer to the length of bytes effectively generated * @returns 0 if the generation went well. -1 in case of error */ int mbedtls_hardware_poll( void *data, unsigned char *output, size_t len, size_t *olen ) { int ret; ((void) data); /* RNG Peripheral clock enable */ __HAL_RCC_RNG_CLK_ENABLE(); /* Initialize RNG instance */ RngHandle.Instance = RNG; HAL_RNG_Init(&RngHandle); /* Get Random byte */ for( uint32_t i = 0; i < len; i++ ){ rng_get_byte( output + i ); } *olen = len; /* Just be extra sure that we didn't do it wrong */ if( ( __HAL_RNG_GET_FLAG(&RngHandle, (RNG_FLAG_CECS|RNG_FLAG_SECS)) ) != 0 ) { ret = -1; } else { ret = 0; } /*Disable the RNG peripheral */ HAL_RNG_DeInit(&RngHandle); /* RNG Peripheral clock disable - assume we're the only users of RNG */ __HAL_RCC_RNG_CLK_DISABLE(); return( ret ); }
void stm32_rng_init(void) { RNG_HandleTypeDef rng_handle = { 0 }; __HAL_RCC_RNG_CLK_ENABLE(); rng_handle.Instance = RNG; HAL_StatusTypeDef status = HAL_RNG_Init(&rng_handle); if (status != HAL_OK) { panic("error initializing random number hardware\n"); } /* seed the pseudo random number generator with this */ #if STM32_SEED_RAND_FROM_HWRNG uint32_t r; /* discard he first result */ status = HAL_RNG_GenerateRandomNumber(&rng_handle, &r); if (status != HAL_OK) { panic("error getting random number from hardware\n"); } status = HAL_RNG_GenerateRandomNumber(&rng_handle, &r); if (status != HAL_OK) { panic("error getting random number from hardware\n"); } srand(r); #endif }
/** * @brief RNG MSP Initialization * This function configures the hardware resources used in this example: * - Peripheral's clock enable * @param hrng: RNG handle pointer * @retval None */ void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng) { /* RNG Peripheral clock enable */ __HAL_RCC_RNG_CLK_ENABLE(); }
/** * @brief Initializes the Global MSP. * @param None * @retval None */ void HAL_MspInit(void) { /* NOTE : This function is generated automatically by MicroXplorer and eventually modified by the user */ /* Enable UART 4 clock */ __HAL_RCC_UART4_CLK_ENABLE(); /* RNG Periph clock enable */ __HAL_RCC_RNG_CLK_ENABLE(); #ifdef USE_STM32F4XX_HW_CRYPTO /* Enable CRYP clock */ __HAL_RCC_CRYP_CLK_ENABLE(); /* Enable Hash clock */ __HAL_RCC_HASH_CLK_ENABLE(); #endif }
void enableRNG(){ __HAL_RCC_RNG_CLK_ENABLE(); RNG_reg->RNG_CR = 0x00000004; }