kosmos/source/firmware/arch/stm32f4xx/driver/stm32f4_rng.c
2016-08-30 17:04:22 +02:00

44 lines
795 B
C

/*
* stm32f4_rng.c
*
* Created on: Aug 30, 2016
* Author: tkl
*/
#include <stddef.h>
#include "board.h"
int stm32f4_rng_open(const void *this)
{
if(NULL == this)
return -1;
struct stm32f4_rng *dev = (struct stm32f4_rng *)this;
__HAL_RCC_RNG_CLK_ENABLE();
HAL_RNG_DeInit(dev->rng_handle);
HAL_RNG_Init(dev->rng_handle);
return 0;
}
int stm32f4_rng_close(const void *this)
{
if(NULL == this)
return -1;
struct stm32f4_rng *dev = (struct stm32f4_rng *)this;
__HAL_RCC_RNG_CLK_DISABLE();
HAL_RNG_DeInit(dev->rng_handle);
return 0;
}
unsigned int stm32f4_rng_read(const void *this)
{
if(NULL == this)
return -1;
struct stm32f4_rng *dev = (struct stm32f4_rng *)this;
uint32_t random = 0;
HAL_RNG_GenerateRandomNumber(dev->rng_handle, &random);
return random;
}