RNG驱动API描述
RNG驱动的API主要如下:
| API类别 | API名称 | 描述 |
|---|---|---|
| 初始化 | hal_rng_init() | 初始化RNG外设,配置计数初值等参数。 |
| hal_rng_deinit() | 反初始化RNG外设。 | |
| hal_rng_msp_init() | 初始化RNG外设所使用的NVIC中断。 | |
| hal_rng_msp_deinit() | 反初始化RNG外设所使用的NVIC中断。 | |
| IO操作 | hal_rng_generate_random_number | 生成随机数,轮询方式。 |
| hal_rng_generate_random_number_it | 生成随机数,中断方式。 | |
| hal_rng_read_last_random_number | 获取最后生成的随机数。 | |
| 中断处理及回调函数 | hal_rng_irq_handler | 中断处理函数。 |
| hal_rng_ready_data_callback | 计数完成回调函数。 | |
| 睡眠相关 | hal_rng_suspend_reg() | 睡眠之前挂起和RNG配置相关的寄存器。 |
| hal_rng_resume_reg() | 唤醒时恢复和RNG配置相关的寄存器。 |
下面章节将对各API进行详细描述。
hal_rng_init
| 函数原型 | hal_status_t hal_rng_init(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 根据RNG句柄中的指定参数初始化RNG。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_rng_deinit
| 函数原型 | hal_status_t hal_rng_deinit(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 将RNG外设寄存器反初始化为它们的默认值。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_rng_msp_init
| 函数原型 | void hal_rng_msp_init(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 初始化RNG外设所使用的NVIC中断。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需要重写该API以初始化RNG中断。 |
hal_rng_msp_deinit
| 函数原型 | void hal_rng_msp_deinit(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 反初始化RNG外设所使用的NVIC中断。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需要重写该API以关闭NVIC中断。 |
hal_rng_generate_random_number
| 函数原型 | hal_status_t hal_rng_generate_random_number(rng_handle_t *p_rng, uint16_t *p_seed, uint32_t *p_random32bit) |
|---|---|
| 功能说明 | 以轮询方式生产随机数。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 p_seed:指向用户配置的随机数种子的指针。当rng_init_t结构体seed_mode成员被配置为RNG_SEED_USER时,该参数才能生效。 p_random32bit:指向RNG模块生成的随机数的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_rng_generate_random_number_it
| 函数原型 | hal_status_t hal_rng_generate_random_number_it(rng_handle_t *p_rng, uint16_t *p_seed, uint32_t *p_random32bit) |
|---|---|
| 功能说明 | 以中断方式生产随机数。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 p_seed:指向用户配置的随机数种子的指针。当rng_init_t结构体seed_mode成员被配置为RNG_SEED_USER时,该参数才能生效。 p_random32bit:指向RNG模块生成的随机数的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_rng_read_last_random_number
| 函数原型 | uint32_t hal_rng_read_last_random_number(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 获取最后生成的随机数值。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | 最后生成的随机数,取值范围:0x00000000 ~ 0xFFFFFFFF。 |
| 备注 |
hal_rng_irq_handler
| 函数原型 | void hal_rng_irq_handler(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 处理RNG中断请求。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | 无 |
| 备注 |
hal_rng_ready_data_callback
| 函数原型 | void hal_rng_ready_data_callback(rng_handle_t *p_rng, uint32_t random32bit) |
|---|---|
| 功能说明 | RNG生成完成中断回调函数。 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 random32bit:RNG模块生成的随机数。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_rng_suspend_reg
| 函数原型 | hal_status_t hal_rng_suspend_reg(rng_handle_t *p_rng); |
|---|---|
| 功能说明 | 睡眠之前挂起和RNG配置相关的寄存器 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | HAL状态 |
| 备注 |
hal_rng_resume_reg
| 函数原型 | hal_status_t hal_rng_resume_reg(rng_handle_t *p_rng) |
|---|---|
| 功能说明 | 唤醒时恢复和RNG配置相关的寄存器 |
| 输入参数 | p_rng:指向rng_handle_t结构体变量的指针,该结构体变量包含指定的RNG模块的配置信息。 |
| 返回值 | HAL状态 |
| 备注 |