156 lines
3.3 KiB
C
Raw Permalink Normal View History

2021-07-28 13:15:22 +08:00
#include "rng.h"
#include "delay.h"
//////////////////////////////////////////////////////////////////////////////////
/**************************************************************************************/
//RNG(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/**************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////
RNG_HandleTypeDef RNG_Handler; //RNG<4E><47><EFBFBD><EFBFBD>
/**************************************************************************************/
//<2F><>ʼ<EFBFBD><CABC>RNG
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/**************************************************************************************/
u8 RNG_Init(void)
{
u16 retry=0;
RNG_Handler.Instance=RNG;
HAL_RNG_DeInit(&RNG_Handler);
HAL_RNG_Init(&RNG_Handler);//<2F><>ʼ<EFBFBD><CABC>RNG
while(__HAL_RNG_GET_FLAG(&RNG_Handler,RNG_FLAG_DRDY)==RESET&&retry<10000)//<2F>ȴ<EFBFBD>RNG׼<47><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
retry++;
delay_us(10);
}
if(retry>=10000) return 1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return 0;
}
/**************************************************************************************/
//<2F><>ʼ<EFBFBD><CABC>RNG
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/**************************************************************************************/
void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng)
{
RCC_PeriphCLKInitTypeDef RNGClkInitStruct;
//<2F><><EFBFBD><EFBFBD>RNGʱ<47><CAB1>Դ<EFBFBD><D4B4>ѡ<EFBFBD><D1A1>PLL<4C><4C>ʱ<EFBFBD><CAB1>Ϊ400MHz
RNGClkInitStruct.PeriphClockSelection=RCC_PERIPHCLK_RNG; //<2F><><EFBFBD><EFBFBD>RNGʱ<47><CAB1>Դ
RNGClkInitStruct.RngClockSelection=RCC_RNGCLKSOURCE_PLL; //RNGʱ<47><CAB1>Դѡ<D4B4><D1A1>PLL
HAL_RCCEx_PeriphCLKConfig(&RNGClkInitStruct);
__HAL_RCC_RNG_CLK_ENABLE();//ʹ<><CAB9>RNGʱ<47><CAB1>
}
/**************************************************************************************/
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:<3A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/**************************************************************************************/
u32 RNG_Get_RandomNum(void)
{
u32 randomnum;
HAL_RNG_GenerateRandomNumber(&RNG_Handler,&randomnum);
return randomnum;
}
/**************************************************************************************/
//<2F><><EFBFBD><EFBFBD>[min,max]<5D><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/**************************************************************************************/
int RNG_Get_RandomRange(int min,int max)
{
u32 randomnum;
HAL_RNG_GenerateRandomNumber(&RNG_Handler,&randomnum);
return randomnum%(max-min+1)+min;
}
/**************************************************************************************/
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/**************************************************************************************/