HMAC驱动API描述
HMAC驱动的API主要包括:
| API类别 | API名称 | 描述 |
|---|---|---|
|
初始化 |
hal_hmac_init() |
初始化HMAC外设,配置计算模式等参数。 |
|
hal_hmac_deinit() |
反初始化HMAC外设。 |
|
|
hal_hmac_msp_init() |
初始化HMAC外设所使用的NVIC中断、DMA通道。 |
|
|
hal_hmac_msp_deinit() |
反初始化HMAC外设所使用的NVIC中断、DMA通道。 |
|
|
IO操作 |
hal_hmac_sha256_digest() |
通过配置enable_irq和enable_dma_mode来区分使用轮询、中断和DMA计算模式。 通过配置mode来区分SHA还是HMAC模式。 |
|
中断处理及回调函数 |
hal_hmac_irq_handler() |
中断处理函数。 |
|
hal_hmac_done_callback() |
计算完成中断回调函数。 |
|
|
hal_hmac_error_callback() |
错误中断回调函数。 |
|
|
状态及错误 |
hal_hmac_get_state() |
获取驱动运行状态。 |
|
hal_hmac_get_error() |
获取错误码。 |
|
|
控制 |
hal_hmac_set_timeout() |
设置超时时间。 |
|
睡眠相关 |
hal_hmac_suspend_reg() |
睡眠时挂起HMAC配置相关的寄存器。 |
|
hal_hmac_resume_reg() |
唤醒时恢复HMAC配置相关的寄存器。 |
下面章节将对各API进行详细描述。
hal_hmac_init
| 函数原型 | hal_status_t hal_hmac_init(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 根据hmac_init_t结构体里的参数初始化HMAC外设。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针,该结构体变量包含指定的HMAC配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_hmac_deinit
| 函数原型 | hal_status_t hal_hmac_deinit(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 反初始化HMAC外设。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针,包含指定的寄存器基址。 |
| 返回值 | HAL状态。 |
| 备注 |
hal_hmac_msp_init
| 函数原型 | void hal_hmac_msp_init(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 初始化HMAC外设所使用的NVIC中断等配置。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成NVIC中断、DMA通道的初始化。 |
hal_hmac_msp_deinit
| 函数原型 | void hal_hmac_msp_deinit(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 反初始化HMAC外设所使用的NVIC中断等配置。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 该函数为weak类型的空函数,开发者需重写该API完成NVIC中断、DMA通道的反初始化。 |
hal_hmac_sha256_digest
| 函数原型 | hal_status_t hal_hmac_sha256_digest(hmac_handle_t *p_hmac, uint32_t *p_message, uint32_t number, uint32_t *p_digest, uint32_t timeout) |
|---|---|
| 功能说明 | 基于SHA-256计算消息摘要/签名,支持轮询、中断、DMA方式。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 p_message:指向待计算消息的指针。 number:待计算消息的长度,单位byte,最大取值为32768,且必须为64的整数倍。 p_digest:指向计算结果的指针。 timeout:计算超时时间,单位ms。 |
| 返回值 | HAL状态。 |
| 备注 | 待计算消息数据量超过最大长度时,可分多次计算。 |
hal_hmac_irq_handler
| 函数原型 | void hal_hmac_irq_handler(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 处理HMAC中断请求。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 |
hal_hmac_done_callback
| 函数原型 | void hal_hmac_done_callback(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | HMAC计算完成回调函数。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 中断或DMA方式下计算操作完成时该接口会被调用。该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_hmac_error_callback
| 函数原型 | void hal_hmac_error_callback(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | HMAC计算错误回调函数。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 | 中断或DMA方式下计算操作错误时该接口会被调用。该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。 |
hal_hmac_get_state
| 函数原型 | hal_hmac_state_t hal_hmac_get_state(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 获取HMAC运行状态。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 |
HMAC运行状态,该参数的取值可能是下列值中的任意一个:
|
| 备注 |
hal_hmac_get_error
| 函数原型 | unit32_t hal_hmac_get_error(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 获取HMAC错误码。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 |
HMAC错误码,该参数的取值可以是下列值中的任意一个:
|
| 备注 |
hal_hmac_set_timeout
| 函数原型 | void hal_hmac_set_timeout(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 设置HMAC超时时间。 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | 无 |
| 备注 |
hal_hmac_suspend_reg
| 函数原型 | hal_status_t hal_hmac_suspend_reg(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 睡眠时挂起HMAC配置相关的寄存器 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | HAL状态 |
| 备注 |
hal_hmac_resume_reg
| 函数原型 | hal_status_t hal_hmac_resume_reg(hmac_handle_t *p_hmac) |
|---|---|
| 功能说明 | 唤醒时恢复HMAC配置相关的寄存器 |
| 输入参数 | p_hmac:指向hmac_handle_t结构体变量的指针。 |
| 返回值 | HAL状态 |
| 备注 |