nRF51822库函数速查

### nRF51822库函数速查 本文档主要介绍了nRF51822微控制器中涉及的关键库函数及其用法。这些函数涵盖了互斥锁管理、中断控制、随机数生成以及电源管理等方面的功能。对于使用nRF51822进行嵌入式开发的工程师来说,熟悉并掌握这些函数是非常重要的。 #### 1. 互斥锁管理 互斥锁是一种用于保护共享资源的数据结构,在多任务环境下尤其重要。nRF51822提供了以下函数来管理和操作互斥锁: - **初始化互斥锁** 函数原型:`uint32_t sd_mutex_new(nrf_mutex_t *p_mutex);` 说明:此函数用于初始化一个互斥锁对象,并返回结果。如果成功,则返回0;如果失败,则返回错误代码。 - **尝试获取互斥锁** 函数原型:`uint32_t sd_mutex_acquire(nrf_mutex_t *p_mutex);` 说明:尝试获取由`p_mutex`指向的互斥锁。如果互斥锁当前未被锁定,则获取成功;否则,将等待直到获取成功。如果成功,则返回0;如果失败,则返回错误代码。 - **释放互斥锁** 函数原型:`uint32_t sd_mutex_release(nrf_mutex_t *p_mutex);` 说明:释放由`p_mutex`指向的互斥锁。如果互斥锁已被锁定,则将其解锁;否则,可能会导致未定义的行为。如果成功,则返回0;如果失败,则返回错误代码。 #### 2. 中断控制 中断是嵌入式系统中的重要机制,可以处理突发事件或外部输入。nRF51822提供了对中断的全面支持: - **使能外部中断** 函数原型:`uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn);` 说明:使能指定中断号`IRQn`所对应的中断。如果成功,则返回0;如果失败,则返回错误代码。 - **禁止外部中断** 函数原型:`uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn);` 说明:禁止指定中断号`IRQn`所对应的中断。如果成功,则返回0;如果失败,则返回错误代码。 - **获取待处理中断** 函数原型:`uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t *p_pending_irq);` 说明:检查指定中断号`IRQn`是否为待处理状态。结果通过`p_pending_irq`返回。如果成功,则返回0;如果失败,则返回错误代码。 - **设置待处理中断** 函数原型:`uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn);` 说明:将指定中断号`IRQn`设置为待处理状态。如果成功,则返回0;如果失败,则返回错误代码。 - **清除待处理中断** 函数原型:`uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn);` 说明:清除指定中断号`IRQn`的待处理状态。如果成功,则返回0;如果失败,则返回错误代码。 - **设置中断优先级** 函数原型:`uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t priority);` 说明:设置指定中断号`IRQn`的优先级为`priority`。如果成功,则返回0;如果失败,则返回错误代码。 - **获取中断优先级** 函数原型:`uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t *p_priority);` 说明:获取指定中断号`IRQn`的优先级,并通过`p_priority`返回。如果成功,则返回0;如果失败,则返回错误代码。 #### 3. 随机数生成 随机数在加密、安全和测试等领域中非常重要。nRF51822提供了一组函数用于生成随机数: - **查询应用的随机数池容量** 函数原型:`uint32_t sd_rand_application_pool_capacity_get(uint8_t *p_pool_capacity);` 说明:查询应用程序中可用的随机数池的容量,并通过`p_pool_capacity`返回。如果成功,则返回0;如果失败,则返回错误代码。 - **获取有效的随机数字节数** 函数原型:`uint32_t sd_rand_application_bytes_available_get(uint8_t *p_bytes_available);` 说明:获取应用程序中可用的有效随机数字节数,并通过`p_bytes_available`返回。如果成功,则返回0;如果失败,则返回错误代码。 - **从池中获取随机数字节** 函数原型:`uint32_t sd_rand_application_vector_get(uint8_t *p_buff, uint8_t length);` 说明:从随机数池中获取`length`个字节的随机数据,并将其存储在`p_buff`指向的缓冲区中。如果成功,则返回0;如果失败,则返回错误代码。 #### 4. 电源管理 电源管理是嵌入式设备中的关键问题之一,特别是在电池供电的应用中。nRF51822提供了一系列函数用于管理和优化电源使用: - **系统复位** 函数原型:`uint32_t sd_nvic_SystemReset(void);` 说明:触发系统复位。如果成功,则返回0;如果失败,则返回错误代码。 - **进入临界区** 函数原型:`uint32_t sd_nvic_critical_region_enter(uint8_t *p_is_nested_critical_region);` 说明:进入临界区,确保原子性操作。如果成功,则返回0;如果失败,则返回错误代码。 - **退出临界区** 函数原型:`uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region);` 说明:退出临界区,恢复正常的中断处理。如果成功,则返回0;如果失败,则返回错误代码。 - **获取复位原因寄存器的值** 函数原型:`uint32_t sd_power_reset_reason_get(uint32_t *p_reset_reason);` 说明:获取复位原因寄存器的值,并通过`p_reset_reason`返回。如果成功,则返回0;如果失败,则返回错误代码。 - **清除复位原因寄存器的若干bit** 函数原型:`uint32_t sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk);` 说明:清除复位原因寄存器中指定的位掩码`reset_reason_clr_msk`。如果成功,则返回0;如果失败,则返回错误代码。 - **设置CPU睡眠时的电源模式** 函数原型:`uint32_t sd_power_mode_set(nrf_power_mode_t power_mode);` 说明:设置CPU进入低功耗模式时的电源模式为`power_mode`。如果成功,则返回0;如果失败,则返回错误代码。 - **关闭系统** 函数原型:`uint32_t sd_power_system_off(void);` 说明:关闭整个系统。如果成功,则返回0;如果失败,则返回错误代码。 - **开关电源失效比较器** 函数原型:`uint32_t sd_power_pof_enable(uint8_t pof_enable);` 说明:启用或禁用电源失效比较器。如果成功,则返回0;如果失败,则返回错误代码。 - **设置电源故障阈值** 函数原型:`uint32_t sd_power_pof_threshold_set(nrf_power_failure_threshold_t threshold);` 说明:设置电源故障检测的阈值为`threshold`。如果成功,则返回0;如果失败,则返回错误代码。 - **设置NRF_POWER->RAMON寄存器** 函数原型:`uint32_t sd_power_ramon_set(uint32_t ramon);` 说明:设置RAMON寄存器的值为`ramon`。如果成功,则返回0;如果失败,则返回错误代码。 - **清除NRF_POWER->RAMON寄存器** 函数原型:`uint32_t sd_power_ramon_clr(uint32_t ramon);` 说明:清除RAMON寄存器中指定的位掩码`ramon`。如果成功,则返回0;如果失败,则则返回错误代码。 - **获取NRF_POWER->RAMON寄存器的内容** 函数原型:`uint32_t sd_power_ramon_get(uint32_t *p_ramon);` 说明:获取RAMON寄存器的内容,并通过`p_ramon`返回。如果成功,则返回0;如果失败,则返回错误代码。 - **设置NRF_POWER->GPREGRET寄存器** 函数原型:`uint32_t sd_power_gpregret_set(uint32_t gpregret_msk);` 说明:设置GPREGRET寄存器的位掩码为`gpregret_msk`。如果成功,则返回0;如果失败,则返回错误代码。 - **清除NRF_POWER->GPREGRET寄存器** 函数原型:`uint32_t sd_power_gpregret_clr(uint32_t gpregret_msk);` 说明:清除GPREGRET寄存器中指定的位掩码`gpregret_msk`。如果成功,则返回0;如果失败,则返回错误代码。 以上介绍了nRF51822微控制器中涉及的一些关键库函数。这些函数覆盖了互斥锁管理、中断控制、随机数生成以及电源管理等各个方面,为开发者提供了强大的工具来构建高性能、可靠的嵌入式系统。

















剩余6页未读,继续阅读

- 伍零壹2019-05-24不错的资料!!

- 粉丝: 795
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 全业务运营时代的网络外包服务.ppt
- 酒店客房计算机设备网络防盗报警系统方案介绍.doc
- 公司科研项目管理办法.doc
- 事业单位会计信息化建设有效途径【精品发布】.doc
- 综合布线工程预算表.pptx
- 最新3月全国计算机等级考试二级C语言上机题库100套最新光碟拷贝版.doc
- 中小型企业网络规划设计方案(完整版).doc
- 高等教育数学建模贪心算法.pptx
- 法律规定网络财产被侵权怎么办.doc
- 智能环境助手-硬件开发资源
- 报刊订阅管理系统的设计与实现数据库课程设计.doc
- 网络安全技术与实践第二版课后答案.doc
- 信息系统工程监理18信息网络系统验收阶段的监理.pptx
- 英语知识结构网络图市公开课一等奖百校联赛优质课金奖名师赛课获奖课件.ppt
- 享受健康网络交往.pptx
- 企业网络工程设计方案.doc


