keil stm32f103中产生随机数范围23-25之间
时间: 2024-01-28 14:04:07 浏览: 215
在Keil中,使用HAL库中的`HAL_RNG_GenerateRandomNumber()`函数生成的随机数范围是`uint32_t`类型的无符号整数,其范围是0到4294967295。如果要产生23到25之间的随机数,可以使用以下代码:
```c
#include "stm32f1xx_hal.h"
int main(void)
{
/* 初始化HAL库 */
HAL_Init();
/* 使能RNG时钟 */
__HAL_RCC_RNG_CLK_ENABLE();
/* 初始化RNG */
RNG_HandleTypeDef rng;
rng.Instance = RNG;
HAL_RNG_Init(&rng);
/* 生成23到25之间的随机数 */
uint32_t random_num;
uint8_t range = 3; // 25 - 23 + 1
do {
HAL_RNG_GenerateRandomNumber(&rng, &random_num);
} while (random_num > (0xFFFFFFFF / range) * range);
random_num %= range;
random_num += 23;
/* 在此处使用随机数 */
while(1)
{
}
}
```
该代码首先初始化HAL库和RNG时钟,然后初始化了RNG结构体并调用`HAL_RNG_Init()`函数进行初始化。接下来,使用do-while循环生成23到25之间的随机数。循环内先生成0到4294967295之间的随机数,如果生成的随机数大于等于`(0xFFFFFFFF / range) * range`,则丢弃该随机数,重新生成。最后,将随机数对`range`取模,并加上23,得到23到25之间的随机数。
阅读全文