Skip to content

概述 ​

本页汇总 Ai-WB2 SDK(Ai-Thinker-Open/Ai-Thinker-WB2,版本 release_bl_iot_sdk_1.6.40)在本站全部教程中使用到的核心 API,按功能分类整理,每张卡片给出函数原型与一句话说明。

用大白话讲:SDK 就像一套积木,API 就是每块积木的"接口说明"——想知道"怎么让 LED 亮""怎么连 Wi-Fi",来这里按分类找函数名,再点「相关教程」看完整用法。

🎯本页目标按功能分类汇总 SDK 常用 API,快速查函数名、参数与出处教程。
📚怎么用每个分类下列出函数原型与一句话说明,末尾附「相关教程」链接,点击可查看该 API 的完整示例代码。
🔗更多 API未列出的底层接口见官方 SDK 源码头文件(`components/` 下各模块 `include` 目录),本站只收录教程中用到的接口。

系统与内核(FreeRTOS) ​

📂 任务管理(task.h) ​

xTaskCreate(pxTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask) ​

创建任务并加入就绪队列,由调度器按优先级调度执行(最常用的任务创建函数)。

xTaskCreateStatic(pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer) ​

用静态内存创建任务,不依赖动态内存分配,适合无堆或内存紧张的场景。

xTaskCreateRestricted(pxTaskDefinition, pxCreatedTask) ​

创建带 MPU 内存保护的任务(安全受限系统专用)。

xTaskCreateRestrictedStatic(pxTaskDefinition, pxCreatedTask) ​

创建带 MPU 内存保护的任务(静态内存版)。

vTaskAllocateMPURegions(xTask, pxRegions) ​

给受限任务分配 MPU 内存区域。

vTaskDelete(xTaskToDelete) ​

删除任务;任务删除自己后不再运行(调用后立即生效)。

vTaskDelay(xTicksToDelay) ​

让当前任务挂起指定 tick 数,期间让出 CPU 给其他任务(最常用的延时)。

vTaskDelayUntil(pxPreviousWakeTime, xTimeIncrement) ​

按绝对时间周期性延时,不受任务执行时长影响,适合精确定时循环。

xTaskAbortDelay(xTask) ​

中止正在延时的任务,使其立即恢复运行。

uxTaskPriorityGet(xTask) ​

获取指定任务的优先级。

uxTaskPriorityGetFromISR(xTask) ​

中断服务函数中获取任务优先级(ISR 安全版)。

eTaskGetState(xTask) ​

获取任务状态(运行/就绪/阻塞/挂起等)。

vTaskGetInfo(xTask, pxTaskStatus, xGetFreeStackSpace, eState) ​

获取任务详细信息(名称、优先级、栈高低水位等)。

vTaskPrioritySet(xTask, uxNewPriority) ​

设置任务优先级。

vTaskSuspend(xTaskToSuspend) ​

挂起任务,任务停止运行直到被 vTaskResume 恢复。

vTaskResume(xTaskToResume) ​

恢复一个被挂起的任务。

xTaskResumeFromISR(xTaskToResume) ​

中断服务函数中恢复任务(ISR 安全版)。

vTaskStartScheduler() ​

启动调度器,开始任务调度(main 中调用后不返回)。

vTaskEndScheduler() ​

停止调度器(仅调试用)。

vTaskSuspendAll() ​

挂起调度器(禁止任务切换,类似进入临界区)。

xTaskResumeAll() ​

恢复被挂起的调度器。

xTaskGetTickCount() ​

获取系统当前的 tick 计数(系统运行时间)。

xTaskGetTickCount2(ticks, overflow) ​

获取 tick 计数并同时返回是否发生溢出。

xTaskGetTickCountFromISR() ​

中断服务函数中获取 tick(ISR 安全版)。

uxTaskGetNumberOfTasks() ​

获取当前系统中的任务总数。

pcTaskGetName(xTaskToQuery) ​

根据任务句柄获取任务名称。

xTaskGetHandle(pcNameToQuery) ​

根据任务名称获取任务句柄。

uxTaskGetStackHighWaterMark(xTask) ​

获取任务栈剩余的最小空间(排查栈溢出)。

uxTaskGetStackHighWaterMark2(xTask) ​

高精度版栈水位检测(支持更大栈值)。

vTaskSetApplicationTaskTag(xTask, pxHookFunction) ​

设置任务应用标签(可挂接钩子函数)。

xTaskGetApplicationTaskTag(xTask) ​

获取任务应用标签。

xTaskGetApplicationTaskTagFromISR(xTask) ​

中断服务函数中获取任务应用标签。

vTaskSetThreadLocalStoragePointer(xTaskToSet, xIndex, pvValue) ​

设置任务线程本地存储指针。

pvTaskGetThreadLocalStoragePointer(xTaskToQuery, xIndex) ​

获取任务线程本地存储指针。

xTaskCallApplicationTaskHook(xTask, pvParameter) ​

调用任务注册的应用钩子函数。

xTaskGetIdleTaskHandle() ​

获取空闲任务句柄。

uxTaskGetSystemState(pxTaskStatusArray, uxArraySize, pulTotalRunTime) ​

获取所有任务的状态快照(调试用)。

vTaskList(pcWriteBuffer) ​

把所有任务的信息打印到字符串(调试用)。

vTaskGetRunTimeStats(pcWriteBuffer) ​

打印各任务运行时间统计(调试用)。

xTaskGetIdleRunTimeCounter() ​

获取空闲任务累计运行时间。

xTaskGenericNotify(xTaskToNotify, ulValue, eAction, pulPreviousNotificationValue) ​

给任务发送通知(值与动作组合),唤醒等待通知的任务。

xTaskGenericNotifyFromISR(xTaskToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken) ​

中断服务函数中发送任务通知(ISR 安全版)。

xTaskNotifyWait(ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait) ​

阻塞等待任务通知,可带超时时间。

vTaskNotifyGiveFromISR(xTaskToNotify, pxHigherPriorityTaskWoken) ​

中断服务函数中给任务发送通知(计数加一)。

ulTaskNotifyTake(xClearCountOnExit, xTicksToWait) ​

等待并消费任务通知(计数式,可带超时)。

xTaskNotifyStateClear(xTask) ​

清除任务的通知状态。

xTaskIncrementTick() ​

系统 tick 递增函数(内核内部接口,勿直接调用)。

vTaskPlaceOnEventList(pxEventList, xTicksToWait) ​

把任务放入事件等待列表(内核内部接口)。

vTaskPlaceOnUnorderedEventList(pxEventList, xItemValue, xTicksToWait) ​

把任务放入无序事件列表(内核内部接口)。

vTaskPlaceOnEventListRestricted(pxEventList, xTicksToWait, xWaitIndefinitely) ​

受限版事件列表挂起(内核内部接口)。

xTaskRemoveFromEventList(pxEventList) ​

从事件列表移除任务(内核内部接口)。

vTaskRemoveFromUnorderedEventList(pxEventListItem, xItemValue) ​

从无序事件列表移除任务(内核内部接口)。

vTaskSwitchContext() ​

任务上下文切换(内核内部接口)。

uxTaskResetEventItemValue() ​

重置任务事件项的值(内核内部接口)。

xTaskGetCurrentTaskHandle() ​

获取当前正在运行的任务句柄。

vTaskSetTimeOutState(pxTimeOut) ​

设置超时状态(内核内部接口)。

xTaskCheckForTimeOut(pxTimeOut, pxTicksToWait) ​

检查是否超时(内核内部接口)。

vTaskMissedYield() ​

标记错过的任务切换(内核内部接口)。

xTaskGetSchedulerState() ​

获取调度器状态(运行中/已挂起)。

xTaskPriorityInherit(pxMutexHolder) ​

优先级继承(内核内部接口)。

xTaskPriorityDisinherit(pxMutexHolder) ​

解除优先级继承(内核内部接口)。

vTaskPriorityDisinheritAfterTimeout(pxMutexHolder, uxHighestPriorityWaitingTask) ​

超时后解除优先级继承(内核内部接口)。

uxTaskGetTaskNumber(xTask) ​

获取任务编号(用户自定义)。

vTaskSetTaskNumber(xTask, uxHandle) ​

设置任务编号(用户自定义)。

vTaskStepTick(xTicksToJump) ​

tick 前跳,低功耗 tickless 模式使用(内核内部接口)。

vTaskStepTickSafe(xTicksToJump) ​

安全版 tick 前跳(内核内部接口)。

eTaskConfirmSleepModeStatus() ​

确认系统是否可进入睡眠(内核内部接口)。

pvTaskIncrementMutexHeldCount() ​

互斥锁持有计数自增(内核内部接口)。

vTaskInternalSetTimeOutState(pxTimeOut) ​

设置内部超时状态(内核内部接口)。

xTaskNotify(pxTask, ulValue, eAction) ​

通知任务(值+动作),最常用的任务通知宏。

xTaskNotifyFromISR(pxTask, ulValue, eAction, pxHigherPriorityTaskWoken) ​

中断服务函数中发送任务通知(ISR 安全版)。

xTaskNotifyGive(pxTask) ​

给任务发送通知,通知计数加一(直接给,无需参数)。

xTaskNotifyAndQuery(pxTask, ulValue, eAction, pxPreviousNotificationValue) ​

发送通知并读取任务之前的值。

xTaskNotifyAndQueryFromISR(pxTask, ulValue, eAction, pxPreviousNotificationValue, pxHigherPriorityTaskWoken) ​

中断服务函数中发送通知并读取之前的值。

📂 队列(queue.h) ​

xQueueGenericSend(xQueue, pvItemToQueue, xTicksToWait, xCopyPosition) ​

队列发送底层实现(xQueueSend 等宏的基础)。

xQueuePeek(xQueue, pvBuffer, xTicksToWait) ​

查看队首数据但不移除(窥探)。

xQueuePeekFromISR(xQueue, pvBuffer) ​

中断服务函数中查看队首数据(ISR 安全版)。

xQueueReceive(xQueue, pvBuffer, xTicksToWait) ​

从队列接收数据,可带超时(最常用的队列接收函数)。

uxQueueMessagesWaiting(xQueue) ​

获取队列中等待处理的消息数。

uxQueueSpacesAvailable(xQueue) ​

获取队列剩余空位数量。

vQueueDelete(xQueue) ​

删除队列并释放资源。

xQueueGenericSendFromISR(xQueue, pvItemToQueue, pxHigherPriorityTaskWoken, xCopyPosition) ​

中断服务函数中发送数据(xQueueSendFromISR 基础)。

xQueueGiveFromISR(xQueue, pxHigherPriorityTaskWoken) ​

中断服务函数中释放信号量(xSemaphoreGiveFromISR 基础)。

xQueueReceiveFromISR(xQueue, pvBuffer, pxHigherPriorityTaskWoken) ​

中断服务函数中接收数据(xQueueReceiveFromISR 基础)。

xQueueIsQueueEmptyFromISR(xQueue) ​

中断服务函数中判断队列是否为空。

xQueueIsQueueFullFromISR(xQueue) ​

中断服务函数中判断队列是否已满。

uxQueueMessagesWaitingFromISR(xQueue) ​

中断服务函数中查询消息数量。

xQueueCRSendFromISR(xQueue, pvItemToQueue, xCoRoutinePreviouslyWoken) ​

协程环境发送数据(已废弃,仅供旧代码)。

xQueueCRReceiveFromISR(xQueue, pvBuffer, pxTaskWoken) ​

协程环境接收数据(已废弃,仅供旧代码)。

xQueueCRSend(xQueue, pvItemToQueue, xTicksToWait) ​

协程环境发送数据(已废弃,仅供旧代码)。

xQueueCRReceive(xQueue, pvBuffer, xTicksToWait) ​

协程环境接收数据(已废弃,仅供旧代码)。

xQueueCreateMutex(ucQueueType) ​

创建互斥锁(xSemaphoreCreateMutex 的基础)。

xQueueCreateMutexStatic(ucQueueType, pxStaticQueue) ​

创建互斥锁(静态内存版)。

xQueueCreateCountingSemaphore(uxMaxCount, uxInitialCount) ​

创建计数信号量(xSemaphoreCreateCounting 的基础)。

xQueueCreateCountingSemaphoreStatic(uxMaxCount, uxInitialCount, pxStaticQueue) ​

创建计数信号量(静态内存版)。

xQueueSemaphoreTake(xQueue, xTicksToWait) ​

获取信号量(xSemaphoreTake 的基础)。

xQueueGetMutexHolder(xSemaphore) ​

获取互斥锁的持有任务。

xQueueGetMutexHolderFromISR(xSemaphore) ​

中断服务函数中获取互斥锁持有任务。

xQueueTakeMutexRecursive(xMutex, xTicksToWait) ​

递归获取互斥锁(xSemaphoreTakeRecursive 基础)。

xQueueGiveMutexRecursive(xMutex) ​

递归释放互斥锁(xSemaphoreGiveRecursive 基础)。

vQueueAddToRegistry(xQueue, pcQueueName) ​

把队列注册到队列注册表(调试用)。

vQueueUnregisterQueue(xQueue) ​

从注册表注销队列。

pcQueueGetName(xQueue) ​

获取队列注册的名称。

xQueueGenericCreate(uxQueueLength, uxItemSize, ucQueueType) ​

队列创建底层实现(xQueueCreate 的基础)。

xQueueGenericCreateStatic(uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType) ​

队列创建底层实现(静态内存版)。

xQueueCreateSet(uxEventQueueLength) ​

创建队列集(一次等待多个队列/信号量)。

xQueueAddToSet(xQueueOrSemaphore, xQueueSet) ​

把队列或信号量加入队列集。

xQueueRemoveFromSet(xQueueOrSemaphore, xQueueSet) ​

把队列或信号量移出队列集。

xQueueSelectFromSet(xQueueSet, xTicksToWait) ​

从队列集中选出一个可操作队列(可带超时)。

xQueueSelectFromSetFromISR(xQueueSet) ​

中断服务函数中从队列集选择(ISR 安全版)。

vQueueWaitForMessageRestricted(xQueue, xTicksToWait, xWaitIndefinitely) ​

受限等待消息(内核内部接口)。

xQueueGenericReset(xQueue, xNewQueue) ​

重置队列到初始状态。

vQueueSetQueueNumber(xQueue, uxQueueNumber) ​

设置队列编号(调试用)。

uxQueueGetQueueNumber(xQueue) ​

获取队列编号(调试用)。

ucQueueGetQueueType(xQueue) ​

获取队列类型(调试用)。

xQueueCreate(uxQueueLength, uxItemSize) ​

创建队列(长度、元素大小),最常用的队列创建宏。

xQueueCreateStatic(uxQueueLength, uxItemSize, pucQueueStorage, pxQueueBuffer) ​

创建队列(静态内存版)。

xQueueSend(xQueue, pvItemToQueue, xTicksToWait) ​

向队列尾部发送数据(等效 xQueueSendToBack,可带超时)。

xQueueSendToFront(xQueue, pvItemToQueue, xTicksToWait) ​

向队列头部发送数据(新数据优先被取走)。

xQueueSendToBack(xQueue, pvItemToQueue, xTicksToWait) ​

向队列尾部发送数据(FIFO 顺序)。

xQueueOverwrite(xQueue, pvItemToQueue) ​

覆盖队列中已有数据(仅当队列为长度为 1 时使用)。

xQueueReset(xQueue) ​

重置队列到初始状态(清空数据)。

xQueueSendFromISR(xQueue, pvItemToQueue, pxHigherPriorityTaskWoken) ​

中断服务函数中向队尾发送数据(ISR 安全版)。

xQueueSendToFrontFromISR(xQueue, pvItemToQueue, pxHigherPriorityTaskWoken) ​

中断服务函数中向队首发送数据(ISR 安全版)。

xQueueSendToBackFromISR(xQueue, pvItemToQueue, pxHigherPriorityTaskWoken) ​

中断服务函数中向队尾发送数据(ISR 安全版)。

xQueueOverwriteFromISR(xQueue, pvItemToQueue, pxHigherPriorityTaskWoken) ​

中断服务函数中覆盖数据(ISR 安全版)。

📂 信号量与互斥锁(semphr.h) ​

vSemaphoreCreateBinary(xSemaphore) ​

创建二值信号量(旧式宏,新代码推荐用 xSemaphoreCreateBinary)。

xSemaphoreCreateBinary() ​

创建二值信号量(任务同步最常用)。

xSemaphoreCreateBinaryStatic(pxSemaphoreBuffer) ​

创建二值信号量(静态内存版)。

xSemaphoreCreateCounting(uxMaxCount, uxInitialCount) ​

创建计数信号量(统计资源数量,如剩余缓冲区个数)。

xSemaphoreCreateCountingStatic(uxMaxCount, uxInitialCount, pxSemaphoreBuffer) ​

创建计数信号量(静态内存版)。

xSemaphoreCreateMutex() ​

创建互斥锁(带优先级继承,防止优先级反转)。

xSemaphoreCreateMutexStatic(pxMutexBuffer) ​

创建互斥锁(静态内存版)。

xSemaphoreCreateRecursiveMutex() ​

创建递归互斥锁(同一任务可多次获取)。

xSemaphoreCreateRecursiveMutexStatic(pxMutexBuffer) ​

创建递归互斥锁(静态内存版)。

xSemaphoreTake(xSemaphore, xBlockTime) ​

获取信号量,可带超时阻塞(最常用)。

xSemaphoreTakeFromISR(xSemaphore, pxHigherPriorityTaskWoken) ​

中断服务函数中获取信号量(ISR 安全版)。

xSemaphoreTakeRecursive(xMutex, xBlockTime) ​

递归获取互斥锁(可重入)。

xSemaphoreGive(xSemaphore) ​

释放信号量(最常用)。

xSemaphoreGiveFromISR(xSemaphore, pxHigherPriorityTaskWoken) ​

中断服务函数中释放信号量(ISR 安全版)。

xSemaphoreGiveRecursive(xMutex) ​

递归释放互斥锁。

xSemaphoreGetMutexHolder(xSemaphore) ​

获取互斥锁持有任务句柄。

xSemaphoreGetMutexHolderFromISR(xSemaphore) ​

中断服务函数中获取互斥锁持有任务。

vSemaphoreDelete(xSemaphore) ​

删除信号量。

uxSemaphoreGetCount(xSemaphore) ​

获取信号量当前计数。

📂 软件定时器(timers.h) ​

xTimerCreate(pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction) ​

创建软件定时器(周期/单次模式,由守护任务统一调度)。

xTimerCreateStatic(pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxTimerBuffer) ​

创建软件定时器(静态内存版)。

pvTimerGetTimerID(xTimer) ​

获取定时器的 ID 值。

vTimerSetTimerID(xTimer, pvNewID) ​

设置定时器的 ID 值。

xTimerIsTimerActive(xTimer) ​

查询定时器是否在运行。

xTimerGetTimerDaemonTaskHandle() ​

获取定时器守护任务句柄。

xTimerPendFunctionCallFromISR(xFunctionToPend, pvParameter1, ulParameter2, pxHigherPriorityTaskWoken) ​

中断服务函数中把函数排入守护任务执行(ISR 安全版)。

xTimerPendFunctionCall(xFunctionToPend, pvParameter1, ulParameter2, xTicksToWait) ​

把一个函数排入守护任务执行队列。

pcTimerGetName(xTimer) ​

获取定时器名称。

vTimerSetReloadMode(xTimer, uxAutoReload) ​

设置定时器自动重载模式。

xTimerGetPeriod(xTimer) ​

获取定时器周期。

xTimerGetExpiryTime(xTimer) ​

获取定时器到期时间(tick 值)。

xTimerCreateTimerTask() ​

创建定时器守护任务(内核内部接口)。

xTimerGenericCommand(xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait) ​

定时器命令底层实现(xTimerStart 等宏的基础)。

vTimerSetTimerNumber(xTimer, uxTimerNumber) ​

设置定时器编号(调试用)。

uxTimerGetTimerNumber(xTimer) ​

获取定时器编号(调试用)。

xTimerStart(xTimer, xBlockTime) ​

启动软件定时器(最常用)。

xTimerStartFromISR(xTimer, pxHigherPriorityTaskWoken) ​

中断服务函数中启动定时器(ISR 安全版)。

xTimerStop(xTimer, xBlockTime) ​

停止软件定时器。

xTimerStopFromISR(xTimer, pxHigherPriorityTaskWoken) ​

中断服务函数中停止定时器(ISR 安全版)。

xTimerChangePeriod(xTimer, xNewPeriod, xBlockTime) ​

修改定时器周期(可同时启动定时器)。

xTimerChangePeriodFromISR(xTimer, xNewPeriod, pxHigherPriorityTaskWoken) ​

中断服务函数中修改周期(ISR 安全版)。

xTimerReset(xTimer, xBlockTime) ​

重置定时器(重新计满整个周期)。

xTimerResetFromISR(xTimer, pxHigherPriorityTaskWoken) ​

中断服务函数中重置定时器(ISR 安全版)。

xTimerDelete(xTimer, xBlockTime) ​

删除软件定时器。

📂 事件组(event_groups.h) ​

xEventGroupCreate() ​

创建事件组(多事件位等待/置位,用于任务间事件同步)。

xEventGroupCreateStatic(pxEventGroupBuffer) ​

创建事件组(静态内存版)。

xEventGroupWaitBits(xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait) ​

等待事件组中指定的一个或多个事件位(可带超时)。

xEventGroupClearBits(xEventGroup, uxBitsToClear) ​

清除事件组中指定的事件位。

xEventGroupClearBitsFromISR(xEventGroup, uxBitsToClear) ​

中断服务函数中清除事件位(ISR 安全版)。

xEventGroupSetBits(xEventGroup, uxBitsToSet) ​

置位事件组中指定的事件位(唤醒等待的任务)。

xEventGroupSetBitsFromISR(xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken) ​

中断服务函数中置位事件位(ISR 安全版)。

xEventGroupSync(xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait) ​

事件组同步:等待所有任务都到达后同时置位并清除事件位。

xEventGroupGetBitsFromISR(xEventGroup) ​

中断服务函数中读取事件位(ISR 安全版)。

vEventGroupDelete(xEventGroup) ​

删除事件组。

vEventGroupSetBitsCallback(pvEventGroup, ulBitsToSet) ​

置位回调(配合 xTimerPendFunctionCall 使用)。

vEventGroupClearBitsCallback(pvEventGroup, ulBitsToClear) ​

清除回调(配合 xTimerPendFunctionCall 使用)。

uxEventGroupGetNumber(xEventGroup) ​

获取事件组编号(调试用)。

vEventGroupSetNumber(xEventGroup, uxEventGroupNumber) ​

设置事件组编号(调试用)。

📂 流与消息缓冲(stream_buffer.h) ​

xStreamBufferSend(xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait) ​

向流缓冲区写入数据(流式字节,可带超时)。

xStreamBufferSendFromISR(xStreamBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken) ​

中断服务函数中写入流数据(ISR 安全版)。

xStreamBufferReceive(xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait) ​

从流缓冲区读取数据(可带超时)。

xStreamBufferReceiveFromISR(xStreamBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken) ​

中断服务函数中读取流数据(ISR 安全版)。

vStreamBufferDelete(xStreamBuffer) ​

删除流缓冲区。

xStreamBufferIsFull(xStreamBuffer) ​

判断流缓冲区是否已满。

xStreamBufferIsEmpty(xStreamBuffer) ​

判断流缓冲区是否为空。

xStreamBufferReset(xStreamBuffer) ​

重置流缓冲区。

xStreamBufferSpacesAvailable(xStreamBuffer) ​

获取流缓冲区剩余空间。

xStreamBufferBytesAvailable(xStreamBuffer) ​

获取流缓冲区中可读字节数。

xStreamBufferSetTriggerLevel(xStreamBuffer, xTriggerLevel) ​

设置触发级别(达到该字节数才唤醒接收任务)。

xStreamBufferSendCompletedFromISR(xStreamBuffer, pxHigherPriorityTaskWoken) ​

通知发送完成(内核内部接口)。

xStreamBufferReceiveCompletedFromISR(xStreamBuffer, pxHigherPriorityTaskWoken) ​

通知接收完成(内核内部接口)。

xStreamBufferGenericCreate(xBufferSizeBytes, xTriggerLevelBytes, xIsMessageBuffer) ​

创建流缓冲区底层实现(xStreamBufferCreate 基础)。

xStreamBufferGenericCreateStatic(xBufferSizeBytes, xTriggerLevelBytes, xIsMessageBuffer, pucStreamBufferStorageArea, pxStaticStreamBuffer) ​

创建流缓冲区底层实现(静态内存版)。

xStreamBufferNextMessageLengthBytes(xStreamBuffer) ​

获取下一条消息长度(消息缓冲区用)。

vStreamBufferSetStreamBufferNumber(xStreamBuffer, uxStreamBufferNumber) ​

设置流缓冲区编号(调试用)。

uxStreamBufferGetStreamBufferNumber(xStreamBuffer) ​

获取流缓冲区编号(调试用)。

ucStreamBufferGetStreamBufferType(xStreamBuffer) ​

获取流缓冲区类型(调试用)。

📂 协程(croutine.h,已废弃) ​

xCoRoutineCreate(pxCoRoutineCode, uxPriority, uxIndex) ​

创建协程(FreeRTOS 旧式协程,已废弃,新代码使用任务)。

vCoRoutineSchedule() ​

协程调度器(已废弃)。

xCoRoutineRemoveFromEventList(pxEventList) ​

从事件列表移除协程(内核内部接口)。

📂 链表(list.h,内核内部) ​

vListInitialise(pxList) ​

初始化链表(内核内部接口)。

vListInitialiseItem(pxItem) ​

初始化链表项(内核内部接口)。

vListInsert(pxList, pxNewListItem) ​

插入链表项到有序位置(内核内部接口)。

vListInsertEnd(pxList, pxNewListItem) ​

插入链表项到链表尾部(内核内部接口)。

uxListRemove(pxItemToRemove) ​

从链表中移除链表项(内核内部接口)。

📖 相关教程:GPIO 输出(点亮 LED) · TCP 客户端

系统初始化与复位 ​

📂 系统初始化与复位 ​

bl_sys_rstinfo_get(void) ​

获取系统复位原因等复位信息。

bl_sys_rstinfo_clr(void) ​

清除保存的复位原因信息。

bl_sys_logall_enable(void) ​

打开系统所有日志输出。

bl_sys_logall_disable(void) ​

关闭系统所有日志输出。

bl_sys_reset_por(void) ​

执行上电复位,重启整个芯片。

bl_sys_reset_system(void) ​

通过软件触发系统复位重启。

bl_sys_isxipaddr(uint32_t addr) ​

判断一个地址是否为 XIP 片内执行地址。

bl_sys_em_config(void) ​

配置系统底层 EM 相关参数。

bl_sys_cache_config(void) ​

配置系统缓存(Cache)工作参数。

bl_sys_pkg_config(void) ​

根据芯片封装类型配置相应引脚。

bl_sys_default_active_config(void) ​

将系统配置恢复为默认激活状态。

bl_sys_early_init(void) ​

系统早期初始化,上电后最先调用。

bl_sys_init(void) ​

系统初始化:配置时钟、引脚复用等底层资源。

bl_sys_wdt_rst_count_get() ​

获取看门狗触发复位的次数。

📖 相关教程:软件复位 · WS2812 RGB 灯

日志输出(blog) ​

📂 日志输出(blog) ​

📖 相关教程:日志输出 · HTTP GET 请求

软件定时器(bl_os_timer) ​

📂 软件定时器(bl_os_timer) ​

bl_os_timer_create(void *func, void *argv) ​

创建一个软件定时器并绑定回调函数。

bl_os_timer_delete(BL_Timer_t timerid, uint32_t tick) ​

删除指定的软件定时器。

bl_os_timer_stop(BL_Timer_t timerid, uint32_t tick) ​

停止正在运行的软件定时器。

bl_os_timer_start_once(BL_Timer_t timerid, long t_sec, long t_nsec) ​

启动定时器,超时后只执行一次回调。

bl_os_timer_start_periodic(BL_Timer_t timerid, long t_sec, long t_nsec) ​

启动定时器,每隔一段时间周期执行回调。

📖 相关教程:软件定时器

低功耗(深度睡眠) ​

📂 低功耗(深度睡眠) ​

hal_hbn_init(uint8_t *pinbuf, uint8_t pinbuf_size) ​

初始化 HBN 模块,为深度睡眠做准备。

hal_hbn_enter(uint32_t time) ​

让芯片进入深度睡眠,定时唤醒可指定时长。

📖 相关教程:睡眠模式

GPIO 通用输入输出 ​

📂 hosal 统一接口层(hosal_gpio.h) ​

hosal_gpio_init(hosal_gpio_dev_t *gpio) ​

初始化 GPIO,配置引脚工作模式(输入/输出)与上下拉电阻。

hosal_gpio_output_set(hosal_gpio_dev_t *gpio, uint8_t value) ​

设置 GPIO 引脚输出高电平或低电平。

hosal_gpio_input_get(hosal_gpio_dev_t *gpio, uint8_t *value) ​

读取 GPIO 引脚当前的输入电平。

hosal_gpio_irq_set(hosal_gpio_dev_t *gpio, hosal_gpio_irq_trigger_t trigger_type, hosal_gpio_irq_handler_t handler, void *arg) ​

配置 GPIO 中断触发方式并注册中断回调函数。

hosal_gpio_irq_mask(hosal_gpio_dev_t *gpio, uint8_t mask) ​

屏蔽或恢复 GPIO 引脚的中断。

hosal_gpio_finalize(hosal_gpio_dev_t *gpio) ​

释放 GPIO 资源,停止引脚功能。

📂 SDK 驱动层(bl_gpio.h) ​

bl_gpio_enable_output(uint8_t pin, uint8_t pullup, uint8_t pulldown) ​

将引脚配置为输出模式,可带上下拉。

bl_gpio_enable_input(uint8_t pin, uint8_t pullup, uint8_t pulldown) ​

将引脚配置为输入模式,可带上下拉。

bl_gpio_output_set(uint8_t pin, uint8_t value) ​

输出高或低电平到指定引脚。

bl_gpio_input_get(uint8_t pin, uint8_t *value) ​

读取指定引脚的输入电平状态。

bl_gpio_input_get_value(uint8_t pin) ​

直接返回指定引脚当前的输入电平值。

bl_gpio_int_clear(uint8_t gpioPin,uint8_t intClear) ​

清除指定 GPIO 引脚的中断标志。

bl_gpio_intmask(uint8_t gpiopin, uint8_t mask) ​

屏蔽或使能指定引脚的 GPIO 中断。

bl_set_gpio_intmod(uint8_t gpioPin, uint8_t intCtrlMod, uint8_t intTrgMod) ​

设置引脚中断的控制与触发模式。

bl_gpio_register(gpio_ctx_t *pstnode) ​

注册 GPIO 引脚并关联其处理函数。

📖 相关教程:GPIO 输出(点亮 LED) · 按键输入 · 外部中断

UART 串口 ​

📂 hosal 统一接口层(hosal_uart.h) ​

hosal_uart_abr_get(hosal_uart_dev_t *uart, uint8_t mode) ​

自动检测 UART 波特率。

hosal_uart_init(hosal_uart_dev_t *uart) ​

按配置初始化 UART 并启用收发。

hosal_uart_init_only_tx(hosal_uart_dev_t *uart) ​

只初始化 UART 发送,不接收。

hosal_uart_send(hosal_uart_dev_t *uart, const void *txbuf, uint32_t size) ​

通过 UART 发送指定长度的数据。

hosal_uart_receive(hosal_uart_dev_t *uart, void *data, uint32_t expect_size) ​

从 UART 接收指定长度的数据。

hosal_uart_ioctl(hosal_uart_dev_t *uart, int ctl, void *p_arg) ​

对 UART 执行控制命令(如改波特率)。

hosal_uart_callback_set(hosal_uart_dev_t *uart, int callback_type, hosal_uart_callback_t pfn_callback, void *arg) ​

注册 UART 事件回调函数。

hosal_uart_finalize(hosal_uart_dev_t *uart) ​

关闭并释放 UART 资源。

📂 SDK 驱动层(bl_uart.h) ​

bl_uart_gpio_init(uint8_t id, uint8_t tx, uint8_t rx, uint8_t rts, uint8_t cts, int baudrate) ​

初始化 UART 使用的引脚和波特率。

bl_uart_init(uint8_t id, uint8_t tx_pin, uint8_t rx_pin, uint8_t cts_pin, uint8_t rts_pin, uint32_t baudrate) ​

配置 UART 引脚、波特率并完成初始化。

bl_uart_debug_early_init(uint32_t baudrate) ​

早期初始化调试串口(仅波特率)。

bl_uart_early_init(uint8_t id, uint8_t tx_pin, uint32_t baudrate) ​

早期初始化 UART(开机阶段,仅发送引脚)。

bl_uart_int_rx_enable(uint8_t id) ​

使能 UART 接收中断。

bl_uart_int_rx_disable(uint8_t id) ​

关闭 UART 接收中断。

bl_uart_int_tx_enable(uint8_t id) ​

使能 UART 发送中断。

bl_uart_int_tx_disable(uint8_t id) ​

关闭 UART 发送中断。

bl_uart_string_send(uint8_t id, char *data) ​

通过 UART 发送一个字符串。

bl_uart_flush(uint8_t id) ​

清空 UART 发送/接收缓冲。

bl_uart_getdefconfig(uint8_t id, uint8_t *parity) ​

获取 UART 默认配置(如校验位)。

bl_uart_setconfig(uint8_t id, uint32_t baudrate, UART_Parity_Type parity) ​

设置 UART 波特率和校验方式。

bl_uart_setbaud(uint8_t id, uint32_t baud) ​

修改 UART 波特率。

bl_uart_data_send(uint8_t id, uint8_t data) ​

通过 UART 发送一个字节数据。

bl_uart_datas_send(uint8_t id, uint8_t *data, int len) ​

通过 UART 发送多字节数据。

bl_uart_data_recv(uint8_t id) ​

从 UART 读取一个字节数据。

bl_uart_int_enable(uint8_t id) ​

打开 UART 中断功能。

bl_uart_int_disable(uint8_t id) ​

关闭 UART 中断功能。

bl_uart_int_rx_notify_register(uint8_t id, cb_uart_notify_t cb, void *arg) ​

注册 UART 接收中断通知回调。

bl_uart_int_tx_notify_register(uint8_t id, cb_uart_notify_t cb, void *arg) ​

注册 UART 发送中断通知回调。

bl_uart_int_rx_notify_unregister(uint8_t id, cb_uart_notify_t cb, void *arg) ​

注销 UART 接收中断通知回调。

bl_uart_int_tx_notify_unregister(uint8_t id, cb_uart_notify_t cb, void *arg) ​

注销 UART 发送中断通知回调。

📖 相关教程:UART 串口通信 · BLE 广播(ibeacon)

硬件定时器(hosal_timer) ​

📂 硬件定时器 ​

hosal_timer_init(hosal_timer_dev_t *tim) ​

初始化硬件定时器并配置周期与回调。

hosal_timer_start(hosal_timer_dev_t *tim) ​

启动硬件定时器开始计时。

hosal_timer_stop(hosal_timer_dev_t *tim) ​

停止硬件定时器,不再触发回调。

hosal_timer_finalize(hosal_timer_dev_t *tim) ​

关闭并释放硬件定时器资源。

📖 相关教程:硬件定时器

PWM(寄存器级) ​

📂 寄存器底层(bl702_pwm.h) ​

PWM_Channel_Init(PWM_CH_CFG_Type *chCfg) ​

初始化 PWM 通道参数(底层寄存器接口)。

PWM_Channel_Update(PWM_CH_ID_Type ch, uint16_t period, uint16_t threshold1, uint16_t threshold2) ​

更新 PWM 通道周期与两个阈值(底层寄存器接口)。

PWM_Channel_Set_Div(PWM_CH_ID_Type ch, uint16_t div) ​

设置 PWM 通道分频系数(底层寄存器接口)。

PWM_Channel_Set_Threshold1(PWM_CH_ID_Type ch, uint16_t threshold1) ​

设置 PWM 通道阈值 1(底层寄存器接口)。

PWM_Channel_Set_Threshold2(PWM_CH_ID_Type ch, uint16_t threshold2) ​

设置 PWM 通道阈值 2(底层寄存器接口)。

PWM_Channel_Set_Period(PWM_CH_ID_Type ch, uint16_t period) ​

设置 PWM 通道周期(底层寄存器接口)。

PWM_Channel_Get(PWM_CH_ID_Type ch, uint16_t *period, uint16_t *threshold1, uint16_t *threshold2) ​

读取 PWM 通道周期与阈值(底层寄存器接口)。

PWM_IntMask(PWM_CH_ID_Type ch, PWM_INT_Type intType, BL_Mask_Type intMask) ​

屏蔽或使能 PWM 中断(底层寄存器接口)。

PWM_Channel_Enable(PWM_CH_ID_Type ch) ​

使能 PWM 通道输出(底层寄存器接口)。

PWM_Channel_Disable(PWM_CH_ID_Type ch) ​

关闭 PWM 通道输出(底层寄存器接口)。

PWM_SW_Mode(PWM_CH_ID_Type ch, BL_Fun_Type enable) ​

切换 PWM 通道为软件控制模式(底层寄存器接口)。

PWM_SW_Force_Value(PWM_CH_ID_Type ch, uint8_t value) ​

软件模式下强制设置 PWM 输出值(底层寄存器接口)。

PWM_Int_Callback_Install(PWM_CH_ID_Type ch, uint32_t intType, intCallback_Type *cbFun) ​

安装 PWM 中断回调函数(底层寄存器接口)。

PWM_Smart_Configure(PWM_CH_ID_Type ch, uint32_t frequency, uint8_t dutyCycle) ​

按频率和占空比快速配置 PWM(底层寄存器接口)。

📂 SDK 驱动层(bl_pwm.h) ​

bl_pwm_init(uint8_t id, uint8_t pin, uint32_t freq) ​

初始化 PWM,设置引脚和频率。

bl_pwm_start(uint8_t id) ​

启动 PWM,开始输出波形。

bl_pwm_stop(uint8_t id) ​

停止 PWM,引脚停止输出波形。

bl_pwm_set_freq(uint8_t id, uint32_t freq) ​

修改 PWM 的输出频率。

bl_pwm_set_duty(uint8_t id, float duty) ​

设置 PWM 占空比(0~100%)。

bl_pwm_get_duty(uint8_t id, float *p_duty) ​

获取 PWM 当前的占空比。

📖 相关教程:PWM 输出

ADC 模数转换 ​

📂 hosal 统一接口层(hosal_adc.h) ​

hosal_adc_init(hosal_adc_dev_t *adc) ​

初始化 ADC 设备,配置采样通道。

hosal_adc_add_channel(hosal_adc_dev_t *adc, uint32_t channel) ​

给 ADC 设备添加一个采样通道。

hosal_adc_remove_channel(hosal_adc_dev_t *adc, uint32_t channel) ​

移除 ADC 设备上的指定采样通道。

hosal_adc_add_reference_channel(hosal_adc_dev_t *adc, uint32_t refer_channel, float refer_voltage) ​

添加参考电压通道,用于校准采样值。

hosal_adc_remove_reference_channel(hosal_adc_dev_t *adc) ​

移除 ADC 的参考电压通道。

hosal_adc_device_get(void) ​

获取系统可用的 ADC 设备指针。

hosal_adc_value_get(hosal_adc_dev_t *adc, uint32_t channel, uint32_t timeout) ​

读取指定通道的 ADC 采样电压值。

hosal_adc_tsen_value_get(hosal_adc_dev_t *adc) ​

读取芯片内置温度传感器的温度值。

hosal_adc_sample_cb_reg(hosal_adc_dev_t *adc, hosal_adc_cb_t cb) ​

注册 ADC 采样完成后的回调函数。

hosal_adc_start(hosal_adc_dev_t *adc, void *data, uint32_t size) ​

启动 ADC 连续采样并写入缓冲区。

hosal_adc_stop(hosal_adc_dev_t *adc) ​

停止 ADC 连续采样。

hosal_adc_finalize(hosal_adc_dev_t *adc) ​

关闭并释放 ADC 设备资源。

📂 SDK 驱动层(bl_adc.h) ​

bl_adc_tsen_init(void) ​

初始化芯片内置温度传感器。

bl_adc_tsen_get_val(void) ​

获取温度传感器当前的温度值。

bl_adc_tsen_dma_init(bl_adc_tsen_cfg_t *cfg) ​

初始化温度传感器 DMA 采集模式。

bl_adc_tsen_dma_trigger(void) ​

触发一次温度传感器 DMA 采样。

bl_adc_tsen_dma_is_busy(void) ​

查询温度传感器 DMA 采样是否忙。

bl_adc_voice_init(bl_adc_voice_cfg_t *cfg) ​

初始化麦克风语音采集功能。

bl_adc_voice_start(void) ​

启动麦克风语音采集。

bl_adc_voice_stop(void) ​

停止麦克风语音采集。

📖 相关教程:ADC 采样 · NTC 温度测量

I2C 总线 ​

📂 I2C ​

hosal_i2c_init(hosal_i2c_dev_t *i2c) ​

初始化 I2C 设备并配置工作模式。

hosal_i2c_master_send(hosal_i2c_dev_t *i2c, uint16_t dev_addr, const uint8_t *data, uint16_t size, uint32_t timeout) ​

主机模式向从设备发送数据。

hosal_i2c_master_recv(hosal_i2c_dev_t *i2c, uint16_t dev_addr, uint8_t *data, uint16_t size, uint32_t timeout) ​

主机模式从从设备接收数据。

hosal_i2c_slave_send(hosal_i2c_dev_t *i2c, const uint8_t *data, uint16_t size, uint32_t timeout) ​

从机模式向主机发送数据。

hosal_i2c_slave_recv(hosal_i2c_dev_t *i2c, uint8_t *data, uint16_t size, uint32_t timeout) ​

从机模式接收主机发来的数据。

hosal_i2c_mem_write(hosal_i2c_dev_t *i2c, uint16_t dev_addr, uint32_t mem_addr, uint16_t mem_addr_size, const uint8_t *data, uint16_t size, uint32_t timeout) ​

通过 I2C 向从设备内部寄存器写入数据。

hosal_i2c_mem_read(hosal_i2c_dev_t *i2c, uint16_t dev_addr, uint32_t mem_addr, uint16_t mem_addr_size, uint8_t *data, uint16_t size, uint32_t timeout) ​

通过 I2C 读取从设备内部寄存器的数据。

hosal_i2c_finalize(hosal_i2c_dev_t *i2c) ​

关闭并释放 I2C 设备资源。

📖 相关教程:I2C 总线通信 · SHT30 温湿度传感器 · BH1750 光照度传感器

SPI 与 DMA ​

📂 SPI 寄存器底层(bl702_spi.h) ​

SPI_Init(SPI_ID_Type spiNo, SPI_CFG_Type *spiCfg) ​

初始化 SPI 外设并配置参数(底层寄存器接口)。

SPI_DeInit(SPI_ID_Type spiNo) ​

关闭并复位 SPI 外设(底层寄存器接口)。

SPI_SetClock(SPI_ID_Type spiNo, uint32_t clk) ​

设置 SPI 的时钟频率(底层寄存器接口)。

SPI_ClockConfig(SPI_ID_Type spiNo, SPI_ClockCfg_Type *clockCfg) ​

配置 SPI 时钟源与分频系数(底层寄存器接口)。

SPI_FifoConfig(SPI_ID_Type spiNo, SPI_FifoCfg_Type *fifoCfg) ​

配置 SPI 发送接收 FIFO(底层寄存器接口)。

SPI_Enable(SPI_ID_Type spiNo, SPI_WORK_MODE_Type modeType) ​

使能 SPI 指定工作模式(底层寄存器接口)。

SPI_Disable(SPI_ID_Type spiNo, SPI_WORK_MODE_Type modeType) ​

关闭 SPI 指定工作模式(底层寄存器接口)。

SPI_SetTimeOutValue(SPI_ID_Type spiNo, uint16_t value) ​

设置 SPI 操作的超时值(底层寄存器接口)。

SPI_SetDeglitchCount(SPI_ID_Type spiNo, uint8_t cnt) ​

设置 SPI 输入去毛刺计数(底层寄存器接口)。

SPI_RxIgnoreEnable(SPI_ID_Type spiNo, uint8_t startPoint, uint8_t stopPoint) ​

使能 SPI 接收数据忽略功能(底层寄存器接口)。

SPI_RxIgnoreDisable(SPI_ID_Type spiNo) ​

关闭 SPI 接收数据忽略功能(底层寄存器接口)。

SPI_ClrTxFifo(SPI_ID_Type spiNo) ​

清空 SPI 发送 FIFO(底层寄存器接口)。

SPI_ClrRxFifo(SPI_ID_Type spiNo) ​

清空 SPI 接收 FIFO(底层寄存器接口)。

SPI_ClrIntStatus(SPI_ID_Type spiNo, SPI_INT_Type intType) ​

清除 SPI 指定的中断标志(底层寄存器接口)。

SPI_IntMask(SPI_ID_Type spiNo, SPI_INT_Type intType, BL_Mask_Type intMask) ​

屏蔽或使能 SPI 指定中断(底层寄存器接口)。

SPI_Int_Callback_Install(SPI_ID_Type spiNo, SPI_INT_Type intType, intCallback_Type *cbFun) ​

注册 SPI 中断回调函数(底层寄存器接口)。

SPI_SendData(SPI_ID_Type spiNo, uint32_t data) ​

向 SPI 发送单个数据字(底层寄存器接口)。

SPI_Send_8bits(SPI_ID_Type spiNo, uint8_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 8 位宽度发送一串数据(底层寄存器接口)。

SPI_Send_16bits(SPI_ID_Type spiNo, uint16_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 16 位宽度发送一串数据(底层寄存器接口)。

SPI_Send_24bits(SPI_ID_Type spiNo, uint32_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 24 位宽度发送一串数据(底层寄存器接口)。

SPI_Send_32bits(SPI_ID_Type spiNo, uint32_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 32 位宽度发送一串数据(底层寄存器接口)。

SPI_Recv_8bits(SPI_ID_Type spiNo, uint8_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 8 位宽度接收一串数据(底层寄存器接口)。

SPI_Recv_16bits(SPI_ID_Type spiNo, uint16_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 16 位宽度接收一串数据(底层寄存器接口)。

SPI_Recv_24bits(SPI_ID_Type spiNo, uint32_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 24 位宽度接收一串数据(底层寄存器接口)。

SPI_Recv_32bits(SPI_ID_Type spiNo, uint32_t *buff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 32 位宽度接收一串数据(底层寄存器接口)。

SPI_SendRecv_8bits(SPI_ID_Type spiNo, uint8_t *sendBuff, uint8_t *recvBuff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 8 位宽度同时收发数据(底层寄存器接口)。

SPI_SendRecv_16bits(SPI_ID_Type spiNo, uint16_t *sendBuff, uint16_t *recvBuff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 16 位宽度同时收发数据(底层寄存器接口)。

SPI_SendRecv_24bits(SPI_ID_Type spiNo, uint32_t *sendBuff, uint32_t *recvBuff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 24 位宽度同时收发数据(底层寄存器接口)。

SPI_SendRecv_32bits(SPI_ID_Type spiNo, uint32_t *sendBuff, uint32_t *recvBuff, uint32_t length, SPI_Timeout_Type timeoutType) ​

以 32 位宽度同时收发数据(底层寄存器接口)。

SPI_ReceiveData(SPI_ID_Type spiNo) ​

读取 SPI 接收到的单个数据字(底层寄存器接口)。

SPI_GetTxFifoCount(SPI_ID_Type spiNo) ​

获取 SPI 发送 FIFO 中的数据个数(底层寄存器接口)。

SPI_GetRxFifoCount(SPI_ID_Type spiNo) ​

获取 SPI 接收 FIFO 中的数据个数(底层寄存器接口)。

SPI_GetIntStatus(SPI_ID_Type spiNo, SPI_INT_Type intType) ​

查询 SPI 指定的中断状态(底层寄存器接口)。

SPI_GetFifoStatus(SPI_ID_Type spiNo, SPI_FifoStatus_Type fifoSts) ​

查询 SPI 发送接收 FIFO 状态(底层寄存器接口)。

SPI_GetBusyStatus(SPI_ID_Type spiNo) ​

查询 SPI 是否处于忙状态(底层寄存器接口)。

📂 DMA 寄存器底层(bl702_dma.h) ​

DMA_Enable(void) ​

使能 DMA 控制器(底层寄存器接口)。

DMA_Disable(void) ​

关闭 DMA 控制器(底层寄存器接口)。

DMA_Channel_Init(DMA_Channel_Cfg_Type *chCfg) ​

初始化 DMA 通道并配置参数(底层寄存器接口)。

DMA_Channel_Update_SrcMemcfg(uint8_t ch, uint32_t memAddr, uint32_t len) ​

更新 DMA 通道源内存地址(底层寄存器接口)。

DMA_Channel_Update_DstMemcfg(uint8_t ch, uint32_t memAddr, uint32_t len) ​

更新 DMA 通道目标内存地址(底层寄存器接口)。

DMA_Channel_TranferSize(uint8_t ch) ​

获取 DMA 通道剩余传输字节数(底层寄存器接口)。

DMA_Channel_Is_Busy(uint8_t ch) ​

查询 DMA 通道是否忙(底层寄存器接口)。

DMA_Channel_Enable(uint8_t ch) ​

使能指定的 DMA 通道(底层寄存器接口)。

DMA_Channel_Disable(uint8_t ch) ​

关闭指定的 DMA 通道(底层寄存器接口)。

DMA_LLI_Init(uint8_t ch, DMA_LLI_Cfg_Type *lliCfg) ​

初始化 DMA 链表传输配置(底层寄存器接口)。

DMA_LLI_Update(uint8_t ch, uint32_t LLI) ​

更新 DMA 链表节点的地址(底层寄存器接口)。

DMA_IntMask(uint8_t ch, DMA_INT_Type intType, BL_Mask_Type intMask) ​

屏蔽或使能 DMA 指定中断(底层寄存器接口)。

DMA_LLI_PpBuf_Start_New_Transmit(DMA_LLI_PP_Buf *dmaPpBuf) ​

用乒乓缓冲开启新的 DMA 传输(底层寄存器接口)。

DMA_LLI_PpBuf_Remove_Completed_List(DMA_LLI_PP_Buf *dmaPpBuf) ​

移除乒乓缓冲中已完成的链表(底层寄存器接口)。

DMA_LLI_PpBuf_Append(DMA_LLI_PP_Buf *dmaPpBuf, DMA_LLI_Ctrl_Type *dmaLliList) ​

向乒乓缓冲追加新的链表节点(底层寄存器接口)。

DMA_LLI_PpBuf_Destroy(DMA_LLI_PP_Buf *dmaPpBuf) ​

销毁乒乓缓冲并释放资源(底层寄存器接口)。

DMA_Int_Callback_Install(DMA_Chan_Type dmaChan, DMA_INT_Type intType, intCallback_Type *cbFun) ​

注册 DMA 中断回调函数(底层寄存器接口)。

DMA_LLI_PpStruct_Start(DMA_LLI_PP_Struct *dmaPpStruct) ​

启动乒乓结构体 DMA 传输(底层寄存器接口)。

DMA_LLI_PpStruct_Stop(DMA_LLI_PP_Struct *dmaPpStruct) ​

停止乒乓结构体 DMA 传输(底层寄存器接口)。

DMA_LLI_PpStruct_Init(DMA_LLI_PP_Struct *dmaPpStruct) ​

初始化乒乓结构体 DMA 配置(底层寄存器接口)。

DMA_LLI_PpStruct_Set_Transfer_Len(DMA_LLI_PP_Struct *dmaPpStruct, uint16_t Ping_Transfer_len, uint16_t Pong_Transfer_len) ​

设置乒乓结构体各缓冲的传输长度(底层寄存器接口)。

📂 hosal 统一接口层(hosal_dma.h) ​

hosal_dma_init(void) ​

初始化 DMA 控制器资源。

hosal_dma_chan_request(int flag) ​

申请一个空闲的 DMA 通道。

hosal_dma_chan_release(hosal_dma_chan_t chan) ​

释放一个 DMA 通道。

hosal_dma_chan_start(hosal_dma_chan_t chan) ​

启动指定 DMA 通道的传输。

hosal_dma_chan_stop(hosal_dma_chan_t chan) ​

停止指定 DMA 通道的传输。

hosal_dma_irq_callback_set(hosal_dma_chan_t chan, hosal_dma_irq_t pfn, void *p_arg) ​

设置 DMA 通道的中断回调函数。

hosal_dma_finalize(void) ​

关闭并释放 DMA 控制器资源。

📖 相关教程:SPI 总线通信 · DMA 数据传输

Flash 存储与文件系统 ​

📂 hosal 统一接口层(hosal_flash.h) ​

hosal_flash_open(const char *name, unsigned int flags) ​

打开并初始化一个 Flash 分区。

hosal_flash_info_get(hosal_flash_dev_t *p_dev, hosal_logic_partition_t *partition) ​

获取 Flash 分区的信息。

hosal_flash_erase(hosal_flash_dev_t *p_dev, uint32_t off_set, uint32_t size) ​

擦除 Flash 分区指定区域的数据。

hosal_flash_write(hosal_flash_dev_t *p_dev, uint32_t *off_set, const void *in_buf, uint32_t in_buf_size) ​

向 Flash 分区指定位置写入数据。

hosal_flash_erase_write(hosal_flash_dev_t *p_dev, uint32_t *off_set, const void *in_buf, uint32_t in_buf_size) ​

先擦除再写入 Flash 指定区域。

hosal_flash_read(hosal_flash_dev_t *p_dev, uint32_t *off_set, void *out_buf, uint32_t out_buf_size) ​

从 Flash 分区指定位置读出数据。

hosal_flash_close(hosal_flash_dev_t *p_dev) ​

关闭 Flash 分区设备。

hosal_flash_raw_read(void *buffer, uint32_t address, uint32_t length) ​

按物理地址直接读取 Flash 数据。

hosal_flash_raw_write(void *buffer, uint32_t address, uint32_t length) ​

按物理地址直接写入 Flash 数据。

hosal_flash_raw_erase(uint32_t start_addr, uint32_t length) ​

按物理地址直接擦除 Flash 数据。

📂 VFS 文件系统接口(vfs.h) ​

aos_open(const char *path, int flags) ​

打开文件或设备(VFS 文件系统接口)。

aos_close(int fd) ​

关闭已打开的文件句柄(VFS 文件系统接口)。

aos_read(int fd, void *buf, size_t nbytes) ​

从文件中读取数据(VFS 文件系统接口)。

aos_write(int fd, const void *buf, size_t nbytes) ​

向文件写入数据(VFS 文件系统接口)。

aos_ioctl(int fd, int cmd, unsigned long arg) ​

对文件执行控制命令(VFS 文件系统接口)。

aos_poll(struct pollfd *fds, int nfds, int timeout) ​

轮询多个文件的可读写状态(VFS 文件系统接口)。

aos_fcntl(int fd, int cmd, int val) ​

设置或查询文件的控制属性(VFS 文件系统接口)。

aos_lseek(int fd, off_t offset, int whence) ​

移动文件的读写位置(VFS 文件系统接口)。

aos_sync(int fd) ​

将文件缓冲数据同步到存储设备(VFS 文件系统接口)。

aos_stat(const char *path, struct stat *st) ​

获取文件或目录的状态信息(VFS 文件系统接口)。

删除指定的文件(VFS 文件系统接口)。

aos_rename(const char *oldpath, const char *newpath) ​

重命名文件或目录(VFS 文件系统接口)。

aos_opendir(const char *path) ​

打开一个目录(VFS 文件系统接口)。

aos_closedir(aos_dir_t *dir) ​

关闭已打开的目录(VFS 文件系统接口)。

aos_readdir(aos_dir_t *dir) ​

读取目录中的一个条目(VFS 文件系统接口)。

aos_mkdir(const char *path) ​

创建一个新目录(VFS 文件系统接口)。

aos_rmdir(const char *path) ​

删除一个空目录(VFS 文件系统接口)。

aos_rewinddir(aos_dir_t *dir) ​

将目录指针重置到开头(VFS 文件系统接口)。

aos_telldir(aos_dir_t *dir) ​

获取目录当前的读取位置(VFS 文件系统接口)。

aos_seekdir(aos_dir_t *dir, long loc) ​

设置目录的读取位置(VFS 文件系统接口)。

aos_statfs(const char *path, struct statfs *buf) ​

获取文件系统空间信息(VFS 文件系统接口)。

aos_access(const char *path, int amode) ​

检查文件是否存在及访问权限(VFS 文件系统接口)。

📖 相关教程:Flash 读写 · MQTTS 连接(读证书)

Wi-Fi 连接管理 ​

📂 Wi-Fi 管理(wifi_mgmr_ext.h) ​

wifi_mgmr_psk_cal(char *password, char *ssid, int ssid_len, char *output) ​

根据密码和 SSID 计算出 WPA PSK 密钥。

wifi_mgmr_drv_init(wifi_conf_t *conf) ​

初始化 Wi-Fi 底层驱动并传入配置。

wifi_mgmr_init(void) ​

初始化 Wi-Fi 管理模块。

wifi_mgmr_start(void) ​

启动 Wi-Fi 管理工作。

wifi_mgmr_start_background(wifi_conf_t *conf) ​

以后台方式启动 Wi-Fi 管理并加载配置。

wifi_mgmr_get_wifi_channel_conf(wifi_conf_t *wifi_chan_conf) ​

获取当前的 Wi-Fi 信道配置。

wifi_mgmr_sta_enable(void) ​

使能 Wi-Fi 站(STA)模式。

wifi_mgmr_sta_disable(wifi_interface_t *interface) ​

关闭 Wi-Fi 站(STA)模式并释放接口。

wifi_mgmr_sta_netif_get(void) ​

获取站模式对应的网络接口。

wifi_mgmr_ap_netif_get(void) ​

获取 AP 热点对应的网络接口。

wifi_mgmr_sta_mac_set(uint8_t mac[6]) ​

设置站模式的 MAC 地址。

wifi_mgmr_sta_mac_get(uint8_t mac[6]) ​

获取站模式的 MAC 地址。

wifi_mgmr_sta_ip_get(uint32_t *ip, uint32_t *gw, uint32_t *mask) ​

获取站模式的 IP、网关和掩码。

wifi_mgmr_sta_ip_set(uint32_t ip, uint32_t mask, uint32_t gw, uint32_t dns1, uint32_t dns2) ​

手动设置站模式的 IP、掩码、网关和 DNS。

wifi_mgmr_sta_dns_get(uint32_t *dns1, uint32_t *dns2) ​

获取站模式使用的 DNS 服务器地址。

wifi_mgmr_sta_ip_unset(void) ​

清除站模式手动设置的 IP,恢复自动获取。

wifi_mgmr_sta_connect_mid(wifi_interface_t *wifi_interface, char *ssid, char *psk, char *pmk, uint8_t *mac, uint8_t band, uint8_t chan_id, uint8_t use_dhcp, uint32_t flags) ​

站模式连接指定路由器,可指定频段、信道等。

wifi_mgmr_sta_connect(wifi_interface_t *wifi_interface, char *ssid, char *psk, char *pmk, uint8_t *mac, uint8_t band, uint8_t chan_id) ​

站模式连接指定路由器(SSID/密码)。

wifi_mgmr_sta_disconnect(void) ​

断开站模式与路由器的连接。

wifi_mgmr_sta_state_get(int *state) ​

获取站模式的连接状态。

wifi_mgmr_sta_ps_enter(uint32_t ps_level) ​

让站模式进入省电模式。

wifi_mgmr_sta_ps_exit() ​

让站模式退出省电模式。

wifi_mgmr_sta_autoconnect_enable(void) ​

开启站模式断线自动重连功能。

wifi_mgmr_sta_autoconnect_disable(void) ​

关闭站模式断线自动重连功能。

wifi_mgmr_sta_autoconnect_set(int interval_second, int repeat_count) ​

设置自动重连的间隔和重试次数。

wifi_mgmr_sta_ssid_set(char *ssid) ​

设置站模式要连接的 Wi-Fi SSID。

wifi_mgmr_sta_passphr_set(char *passphr) ​

设置站模式连接的 Wi-Fi 密码。

wifi_mgmr_sta_psk_set(char *psk) attribute ((deprecated ("use wifi_mgmr_sta_passphr_set instead"))) ​

设置 PSK 密钥(已废弃,请用 passphr 接口)。

wifi_mgmr_sta_connect_ind_stat_get(wifi_mgmr_sta_connect_ind_stat_info_t *wifi_mgmr_ind_stat) ​

获取站模式连接的指示统计信息。

wifi_mgmr_ap_enable(void) ​

使能 Wi-Fi AP 热点模式。

wifi_mgmr_ap_mac_set(uint8_t mac[6]) ​

设置 AP 热点的 MAC 地址。

wifi_mgmr_ap_mac_get(uint8_t mac[6]) ​

获取 AP 热点的 MAC 地址。

wifi_mgmr_ap_ip_get(uint32_t *ip, uint32_t *gw, uint32_t *mask) ​

获取 AP 热点的 IP、网关和掩码。

wifi_mgmr_ap_ip_set(uint32_t ip, uint32_t gw, uint32_t mask) ​

手动设置 AP 热点的 IP、网关和掩码。

wifi_mgmr_ap_dhcp_get(int *enable) ​

查询 AP 热点的 DHCP 服务是否开启。

wifi_mgmr_ap_dhcp_enable(void) ​

开启 AP 热点的 DHCP 自动分配功能。

wifi_mgmr_ap_dhcp_disable(void) ​

关闭 AP 热点的 DHCP 自动分配功能。

wifi_mgmr_ap_dhcp_range_get(uint32_t *ip, uint32_t *mask, int *start, int *end) ​

获取 AP 热点 DHCP 分配的地址池范围。

wifi_mgmr_ap_dhcp_range_set(uint32_t ip, uint32_t mask, int start, int end) ​

设置 AP 热点 DHCP 分配的地址池范围。

wifi_mgmr_ap_stop(wifi_interface_t *interface) ​

停止 AP 热点并释放接口。

wifi_mgmr_ap_start(wifi_interface_t *interface, char *ssid, int hidden_ssid, char *passwd, int channel) ​

启动 AP 热点,可设置 SSID、密码和信道。

wifi_mgmr_ap_chan_switch(wifi_interface_t *interface, int channel, uint8_t cs_count) ​

切换 AP 热点的工作信道。

wifi_mgmr_ap_start_adv(wifi_interface_t *interface, char *ssid, int hidden_ssid, char *passwd, int channel, uint8_t use_dhcp) ​

启动 AP 热点,额外指定是否开启 DHCP。

wifi_mgmr_ap_start_atcmd(wifi_interface_t *interface, char *ssid, int hidden_ssid, char *passwd, int channel, int max_sta_supported) ​

启动 AP 热点,可指定最大接入设备数。

wifi_mgmr_ap_sta_cnt_get(uint8_t *sta_cnt) ​

获取当前接入 AP 热点的设备数量。

wifi_mgmr_ap_sta_info_get(struct wifi_sta_basic_info *sta_info, uint8_t idx) ​

按序号获取接入 AP 热点设备的信息。

wifi_mgmr_ap_sta_delete(uint8_t sta_idx) ​

将指定设备从 AP 热点断开。

wifi_mgmr_ap_set_gateway(char *gateway) ​

设置 AP 热点的网关地址。

wifi_mgmr_sniffer_enable(void) ​

开启 Wi-Fi 嗅探(抓包)模式。

wifi_mgmr_sniffer_disable(void) ​

关闭 Wi-Fi 嗅探(抓包)模式。

wifi_mgmr_rate_config(uint16_t config) ​

配置 Wi-Fi 的速率相关参数。

wifi_mgmr_conf_max_sta(uint8_t max_sta_supported) ​

设置 AP 热点允许接入的最大设备数。

wifi_mgmr_sniffer_register(void *env, sniffer_cb_t cb) ​

注册嗅探数据回调函数,接收抓到的包。

wifi_mgmr_sniffer_unregister(void *env) ​

注销嗅探数据回调函数。

wifi_mgmr_sniffer_register_adv(void *env, sniffer_cb_adv_t cb) ​

注册高级嗅探回调,可获取更多包信息。

wifi_mgmr_sniffer_unregister_adv(void *env) ​

注销高级嗅探数据回调函数。

wifi_mgmr_state_get(int *state) ​

获取 Wi-Fi 整体工作状态。

wifi_mgmr_detailed_state_get(int *state, int *state_detailed) ​

获取 Wi-Fi 状态及详细子状态。

wifi_mgmr_status_code_get(int *s_code) ​

获取连接失败时的状态码。

wifi_mgmr_rssi_get(int *rssi) ​

获取当前连接的 Wi-Fi 信号强度(RSSI)。

wifi_mgmr_channel_get(int *channel) ​

获取当前使用的 Wi-Fi 信道。

wifi_mgmr_channel_set(int channel, int use_40Mhz) ​

设置 Wi-Fi 工作信道,可指定 40MHz 带宽。

wifi_mgmr_all_ap_scan(wifi_mgmr_ap_item_t **ap_ary, uint32_t *num) ​

扫描周围所有 Wi-Fi 热点并返回列表。

wifi_mgmr_scan_filter_hidden_ssid(int filter) ​

设置扫描结果是否过滤隐藏 SSID 的热点。

wifi_mgmr_scan(void *data, scan_complete_cb_t cb) ​

发起 Wi-Fi 扫描,完成后回调通知。

wifi_mgmr_scan_adv(void *data, scan_complete_cb_t cb, uint16_t *channels, uint16_t channel_num, const uint8_t bssid[6], const char *ssid, uint8_t scan_mode, uint32_t duration_scan) ​

高级扫描,可按信道、BSSID、SSID 等条件过滤。

wifi_mgmr_cfg_req(uint32_t ops, uint32_t task, uint32_t element, uint32_t type, uint32_t length, uint32_t *buf) ​

向 Wi-Fi 管理发送配置请求(通用接口)。

wifi_mgmr_scan_complete_callback() ​

扫描完成时的回调函数(供内部调用)。

wifi_mgmr_scan_ap(char *ssid, wifi_mgmr_ap_item_t *item) ​

按 SSID 查找指定的 Wi-Fi 热点。

wifi_mgmr_scan_ap_all(wifi_mgmr_ap_item_t *env, uint32_t *param1, scan_item_cb_t cb) ​

遍历所有扫描到的热点并逐条回调。

wifi_mgmr_raw_80211_send(uint8_t *pkt, int len) ​

直接发送原始 802.11 数据帧。

wifi_mgmr_set_country_code(char *country_code) ​

设置 Wi-Fi 国家码(影响信道与功率)。

wifi_mgmr_get_country_code(char *country_code) ​

获取当前设置的 Wi-Fi 国家码。

wifi_mgmr_set_hostname(char *hostname) ​

设置设备的主机名(DHCP 上报用)。

wifi_mgmr_status_code_str(uint16_t status_code) ​

将 Wi-Fi 状态码转换为可读字符串。

wifi_mgmr_beacon_interval_set(uint16_t beacon_int) ​

设置 AP 热点的信标(Beacon)发送间隔。

wifi_mgmr_conn_result_get(uint16_t *status_code, uint16_t *reason_code) ​

获取连接失败的状态码和原因码。

wifi_mgmr_set_wifi_active_time(uint32_t ms) ​

设置 Wi-Fi 的活跃时间(毫秒)。

wifi_mgmr_set_listen_interval(uint16_t itv) ​

设置省电模式下的监听间隔。

📂 事件机制(aos/yloop.h) ​

aos_register_event_filter(uint16_t type, aos_event_cb cb, void *priv) ​

注册事件过滤回调(事件机制,配合事件过滤使用)。

aos_unregister_event_filter(uint16_t type, aos_event_cb cb, void *priv) ​

注销事件过滤回调(事件机制,配合事件过滤使用)。

aos_post_event(uint16_t type, uint16_t code, unsigned long value) ​

发布一个事件,触发已注册的过滤回调(事件机制,配合事件过滤使用)。

aos_poll_read_fd(int fd, aos_poll_call_t action, void *param) ​

注册文件描述符的可读事件,可读时回调。

aos_cancel_poll_read_fd(int fd, aos_poll_call_t action, void *param) ​

注销文件描述符的可读事件。

aos_post_delayed_action(int ms, aos_call_t action, void *arg) ​

延时指定毫秒后执行一个动作函数。

aos_cancel_delayed_action(int ms, aos_call_t action, void *arg) ​

取消之前安排的延时动作。

aos_schedule_call(aos_call_t action, void *arg) ​

调度一个动作在事件循环中立即执行。

aos_loop_init(void) ​

初始化事件循环(Event Loop)。

aos_current_loop(void) ​

获取当前线程的事件循环对象。

aos_loop_run(void) ​

启动事件循环并持续处理事件。

aos_loop_exit(void) ​

请求退出事件循环。

aos_loop_destroy(void) ​

销毁事件循环并释放资源。

aos_loop_schedule_call(aos_loop_t *loop, aos_call_t action, void *arg) ​

在指定事件循环中调度动作执行。

aos_loop_schedule_work(int ms, aos_call_t action, void *arg1, aos_call_t fini_cb, void *arg2) ​

在事件循环中延时执行任务,完成后回调。

aos_cancel_work(void *work, aos_call_t action, void *arg1) ​

取消事件循环中已安排的任务。

📂 lwIP 协议栈(tcpip.h) ​

tcpip_init(tcpip_init_done_fn tcpip_init_done, void *arg) ​

初始化 lwIP 协议栈(lwIP 协议栈初始化)。

tcpip_try_callback(tcpip_callback_fn function, void *ctx) ​

尝试把回调函数投递到 tcpip 线程执行。

tcpip_callback(tcpip_callback_fn function, void *ctx) ​

把回调函数投递到 tcpip 线程执行。

📂 其余接口 ​

wifi_sta_ip4_addr_get(uint32_t *addr, uint32_t *mask, uint32_t *gw, uint32_t *dns) ​

获取站模式的 IPv4 地址、掩码、网关和 DNS。

📖 相关教程:Wi-Fi 连接 · Wi-Fi 热点 · BluFi 配网

网络通信(lwIP Socket) ​

📂 lwIP 底层实现(sockets.h) ​

lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen) ​

接受客户端连接请求(lwip_accept,宏 accept() 的底层实现)。

lwip_bind(int s, const struct sockaddr *name, socklen_t namelen) ​

给套接字绑定本地地址(lwip_bind,宏 bind() 的底层实现)。

lwip_close(int s) ​

关闭套接字并释放资源(lwip_close,宏 close() 的底层实现)。

lwip_connect(int s, const struct sockaddr *name, socklen_t namelen) ​

连接远程服务器(lwip_connect,宏 connect() 的底层实现)。

lwip_fcntl(int s, int cmd, int val) ​

对套接字执行 fcntl 控制命令(lwip_fcntl,宏 fcntl() 的底层实现)。

lwip_getpeername(int s, struct sockaddr *name, socklen_t *namelen) ​

获取连接对端的地址(lwip_getpeername,宏 getpeername() 的底层实现)。

lwip_getsockname(int s, struct sockaddr *name, socklen_t *namelen) ​

获取套接字本地的地址(lwip_getsockname,宏 getsockname() 的底层实现)。

lwip_getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen) ​

读取套接字的选项值(lwip_getsockopt,宏 getsockopt() 的底层实现)。

lwip_inet_ntop(int af, const void *src, char *dst, socklen_t size) ​

把二进制 IP 地址转为字符串(lwip_inet_ntop,宏 inet_ntop() 的底层实现)。

lwip_inet_pton(int af, const char *src, void *dst) ​

把 IP 地址字符串转为二进制(lwip_inet_pton,宏 inet_pton() 的底层实现)。

lwip_ioctl(int s, long cmd, void *argp) ​

对套接字执行 ioctl 控制命令(lwip_ioctl,宏 ioctl() 的底层实现)。

lwip_listen(int s, int backlog) ​

进入监听状态等待连接(lwip_listen,宏 listen() 的底层实现)。

lwip_poll(struct pollfd *fds, nfds_t nfds, int timeout) ​

轮询监听多个套接字状态(lwip_poll,宏 poll() 的底层实现)。

lwip_read(int s, void *mem, size_t len) ​

从套接字读取数据(lwip_read,宏 read() 的底层实现)。

lwip_readv(int s, const struct iovec *iov, int iovcnt) ​

把数据读入多块缓冲区(lwip_readv,宏 readv() 的底层实现)。

lwip_recv(int s, void *mem, size_t len, int flags) ​

从套接字接收数据(lwip_recv,宏 recv() 的底层实现)。

lwip_recvfrom(int s, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen) ​

接收数据并取得发送方地址(lwip_recvfrom,宏 recvfrom() 的底层实现)。

lwip_recvmsg(int s, struct msghdr *message, int flags) ​

接收消息并附带控制信息(lwip_recvmsg,宏 recvmsg() 的底层实现)。

lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, struct timeval *timeout) ​

同时监听多个套接字事件(lwip_select,宏 select() 的底层实现)。

lwip_send(int s, const void *dataptr, size_t size, int flags) ​

通过套接字发送数据(lwip_send,宏 send() 的底层实现)。

lwip_sendmsg(int s, const struct msghdr *message, int flags) ​

发送带控制信息的消息(lwip_sendmsg,宏 sendmsg() 的底层实现)。

lwip_sendto(int s, const void *dataptr, size_t size, int flags, const struct sockaddr *to, socklen_t tolen) ​

发送数据到指定地址(lwip_sendto,宏 sendto() 的底层实现)。

lwip_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) ​

设置套接字的选项(lwip_setsockopt,宏 setsockopt() 的底层实现)。

lwip_shutdown(int s, int how) ​

关闭套接字的收发功能(lwip_shutdown,宏 shutdown() 的底层实现)。

lwip_socket(int domain, int type, int protocol) ​

创建 socket 套接字(lwip_socket,宏 socket() 的底层实现)。

lwip_socket_thread_cleanup(void) ​

清理并退出 socket 工作线程(宏 socket() 等的底层实现)。

lwip_socket_thread_init(void) ​

初始化 socket 工作线程(宏 socket() 等的底层实现)。

lwip_write(int s, const void *dataptr, size_t size) ​

向套接字写入数据(lwip_write,宏 write() 的底层实现)。

lwip_writev(int s, const struct iovec *iov, int iovcnt) ​

把多块缓冲区数据写出(lwip_writev,宏 writev() 的底层实现)。

📂 宏接口(socket 等标准函数) ​

accept(sock, addr, addrlen) ​

接受一个客户端连接,返回新的连接 socket(TCP 服务端)。

bind(sock, addr, addrlen) ​

把 socket 绑定到本地地址和端口(服务端必须先 bind)。

close(sock) ​

关闭 socket,释放连接资源。

connect(sock, addr, addrlen) ​

连接到远程服务器地址和端口(TCP 客户端)。

fcntl(int s, int cmd, ...) ​

设置 socket 文件描述符属性(如非阻塞模式)。

freeaddrinfo(res) ​

释放 getaddrinfo 返回的地址列表。

getaddrinfo(nodname, servname, hints, res) ​

域名解析:把主机名和服务名解析为地址列表(支持 DNS)。

getpeername(sock, name, namelen) ​

获取连接对端的地址和端口。

getsockname(sock, name, namelen) ​

获取 socket 自身的地址和端口。

getsockopt(sock, level, optname, optval, optlen) ​

读取 socket 当前选项值。

inet_addr(cp) ​

把点分十进制字符串转换为 32 位网络字节序地址。

inet_aton(cp, addr) ​

把点分十进制字符串转换为 IP 地址结构。

inet_ntoa(addr) ​

把 IP 地址结构转换为点分十进制字符串。

ioctl(sock, cmd, argp) ​

对 socket 执行控制命令(如查询可读字节数)。

listen(sock, backlog) ​

使 socket 进入监听状态,等待客户端连接(TCP 服务端)。

poll(fds, nfds, timeout) ​

类似 select:轮询多个 socket 的状态。

read(sock, mem, len) ​

从 socket 读取数据(等效 recv)。

recv(sock, buf, len, flags) ​

从已连接的 socket 接收数据(TCP 接收,可阻塞)。

recvfrom(sock, buf, len, flags, from, fromlen) ​

接收数据报并返回发送方地址(UDP 接收)。

select(maxfdp1, readset, writeset, exceptset, timeout) ​

同时监听多个 socket 的可读/可写/异常事件(多路复用)。

send(sock, buf, len, flags) ​

发送数据到已连接的 socket(TCP 发送)。

sendto(sock, buf, len, flags, to, tolen) ​

向指定地址发送数据报(UDP 发送,无需连接)。

setsockopt(sock, level, optname, optval, optlen) ​

设置 socket 选项(如超时、地址复用、缓冲区大小)。

shutdown(sock, how) ​

关闭 socket 的发送或接收方向(半关闭)。

socket(domain, type, protocol) ​

创建 socket 套接字,返回文件描述符(宏,实际为 lwip_socket)。

write(sock, dataptr, len) ​

向 socket 写入数据(等效 send)。

📖 相关教程:TCP 客户端 · TCP 服务端 · UDP 客户端 · UDP 广播 · UDP 组播 · HTTP 请求 · Wi-Fi 热点

SNTP 时间同步 ​

📂 SNTP 时间同步 ​

sntp_getoperatingmode(void) ​

获取 SNTP 当前的工作模式。

sntp_init(void) ​

初始化并启动 SNTP 校时服务。

sntp_stop(void) ​

停止 SNTP 校时服务。

sntp_enabled(void) ​

查询 SNTP 是否已启用。

sntp_setserver(u8_t idx, const ip_addr_t *addr) ​

按序号设置 NTP 服务器地址。

sntp_getserver(u8_t idx) ​

按序号获取 NTP 服务器地址。

sntp_getreachability(u8_t idx) ​

按序号查询服务器是否可达。

sntp_setservername(u8_t idx, const char *server) ​

按序号设置 NTP 服务器域名。

sntp_getservername(u8_t idx) ​

按序号获取 NTP 服务器域名。

sntp_servermode_dhcp(int set_servers_from_dhcp) ​

设置是否从 DHCP 获取 NTP 服务器。

sntp_get_time(uint32_t *seconds, uint32_t *frags) ​

获取 SNTP 同步得到的时间。

sntp_settimesynccb(ntp_sync_cb cb) ​

注册校时完成时的回调函数。

sntp_setupdatedelay(uint32_t delay) ​

设置两次校时之间的间隔延迟。

sntp_getoperatingmode(void) ​

获取 SNTP 当前的工作模式。

sntp_init(void) ​

初始化并启动 SNTP 校时服务。

sntp_stop(void) ​

停止 SNTP 校时服务。

sntp_enabled(void) ​

查询 SNTP 是否已启用。

sntp_setserver(u8_t idx, const ip_addr_t *addr) ​

按序号设置 NTP 服务器地址。

sntp_getserver(u8_t idx) ​

按序号获取 NTP 服务器地址。

sntp_getreachability(u8_t idx) ​

按序号查询服务器是否可达。

sntp_setservername(u8_t idx, const char *server) ​

按序号设置 NTP 服务器域名。

sntp_getservername(u8_t idx) ​

按序号获取 NTP 服务器域名。

sntp_servermode_dhcp(int set_servers_from_dhcp) ​

设置是否从 DHCP 获取 NTP 服务器。

utils_time_date_from_epoch(unsigned int epoch, utils_time_date_t *date) ​

把时间戳转换成日期时间结构。

📖 相关教程:SNTP 时间同步

BLE 蓝牙与配网 ​

📂 BLE 协议栈(bluetooth.h) ​

bt_enable(bt_ready_cb_t cb) ​

初始化并开启蓝牙协议栈。

bt_set_name(const char *name) ​

设置蓝牙设备的名称。

bt_get_name(void) ​

获取蓝牙设备的名称。

bt_set_id_addr(const bt_addr_le_t *addr) ​

设置本地蓝牙身份地址。

bt_id_get(bt_addr_le_t *addrs, size_t *count) ​

获取已配置的蓝牙身份地址。

bt_id_create(bt_addr_le_t *addr, u8_t *irk) ​

创建一个新的蓝牙身份。

bt_id_reset(u8_t id, bt_addr_le_t *addr, u8_t *irk) ​

重置指定的蓝牙身份。

bt_id_delete(u8_t id) ​

删除指定的蓝牙身份。

bt_le_adv_update_data(const struct bt_data *ad, size_t ad_len, const struct bt_data *sd, size_t sd_len) ​

更新广播数据和扫描应答数据。

bt_le_adv_stop(void) ​

停止 BLE 广播。

bt_le_scan_cb_t(const bt_addr_le_t *addr, s8_t rssi, u8_t adv_type, struct net_buf_simple *buf) ​

BLE 扫描回调函数类型,扫到设备时调用。

bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb) ​

按给定参数开始 BLE 扫描。

bt_le_scan_stop(void) ​

停止 BLE 扫描。

bt_le_whitelist_add(const bt_addr_le_t *addr) ​

把设备加入扫描白名单。

bt_le_whitelist_rem(const bt_addr_le_t *addr) ​

把设备移出扫描白名单。

bt_le_whitelist_clear(void) ​

清空扫描白名单。

bt_le_set_chan_map(u8_t chan_map[5]) ​

设置 BLE 使用的信道映射。

bt_data_parse(struct net_buf_simple *ad, bool (*func)(struct bt_data *data, void *user_data), void *user_data) ​

解析广播数据里的 AD 结构。

bt_le_oob_get_local(u8_t id, struct bt_le_oob *oob) ​

获取本地的 OOB 配对数据。

bt_br_discovery_cb_t(struct bt_br_discovery_result *results, size_t count) ​

经典蓝牙设备发现回调函数类型。

bt_br_discovery_start(const struct bt_br_discovery_param *param, struct bt_br_discovery_result *results, size_t count, bt_br_discovery_cb_t cb) ​

开始发现经典蓝牙设备。

bt_br_discovery_stop(void) ​

停止发现经典蓝牙设备。

bt_disable(void) ​

关闭并释放蓝牙协议栈。

bt_br_oob_get_local(struct bt_br_oob *oob) ​

获取经典蓝牙本地的 OOB 数据。

bt_addr_from_str(const char *str, bt_addr_t *addr) ​

把字符串解析成蓝牙地址。

bt_addr_le_from_str(const char *str, const char *type, bt_addr_le_t *addr) ​

解析带地址类型的 LE 蓝牙地址。

bt_br_set_discoverable(bool enable) ​

设置经典蓝牙可被发现。

bt_br_set_connectable(bool enable) ​

设置经典蓝牙可被连接。

bt_unpair(u8_t id, const bt_addr_le_t *addr) ​

解除与设备的配对绑定。

bt_foreach_bond(u8_t id, void (*func)(const struct bt_bond_info *info, void *user_data), void *user_data) ​

遍历所有已配对的设备。

bt_br_write_local_name(char *name) ​

写入经典蓝牙的本地名称。

bt_br_write_eir(u8_t fec, u8_t *data) ​

写入经典蓝牙的 EIR 扩展数据。

📂 BluFi 配网(blufi_init.h) ​

_blufi_host_and_cb_init(_blufi_callbacks_t *example_callbacks) ​

初始化 BLUFI 配网并注册回调。

btc_blufi_protocol_handler(uint8_t type, uint8_t *data, int len) ​

处理 BLUFI 协议收到的数据。

btc_blufi_send_encap(uint8_t type, uint8_t *data, int data_len) ​

封装并发送 BLUFI 数据包。

btc_blufi_set_callbacks(_blufi_callbacks_t *callbacks) ​

设置 BLUFI 的回调函数组。

btc_blufi_cb_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src) ​

深拷贝 BLUFI 回调消息。

btc_blufi_cb_deep_free(btc_msg_t *msg) ​

释放深拷贝消息占用的内存。

📖 相关教程:BLE 简介 · BLE 广播(ibeacon) · BluFi 配网

MQTT 与云平台 ​

📂 安信可 MQTT 客户端(mqtt_client.h) ​

axk_mqtt_client_init(const axk_mqtt_client_config_t *config) ​

初始化 MQTT 客户端(安信可 MQTT)。

axk_mqtt_client_set_uri(axk_mqtt_client_handle_t client, const char *uri) ​

设置 MQTT 服务器的地址 URI(安信可 MQTT)。

axk_mqtt_client_start(axk_mqtt_client_handle_t client) ​

启动并连接 MQTT 客户端(安信可 MQTT)。

axk_mqtt_client_reconnect(axk_mqtt_client_handle_t client) ​

重新连接 MQTT 服务器(安信可 MQTT)。

axk_mqtt_client_disconnect(axk_mqtt_client_handle_t client) ​

断开当前的 MQTT 连接(安信可 MQTT)。

axk_mqtt_client_stop(axk_mqtt_client_handle_t client) ​

停止并释放 MQTT 客户端(安信可 MQTT)。

axk_mqtt_client_subscribe(axk_mqtt_client_handle_t client, const char *topic, int qos) ​

订阅一个 MQTT 主题(安信可 MQTT)。

axk_mqtt_client_unsubscribe(axk_mqtt_client_handle_t client, const char *topic) ​

取消订阅一个 MQTT 主题(安信可 MQTT)。

axk_mqtt_client_publish(axk_mqtt_client_handle_t client, const char *topic, const char *data, int len, int qos, int retain) ​

向主题发布一条消息(安信可 MQTT)。

axk_mqtt_client_enqueue(axk_mqtt_client_handle_t client, const char *topic, const char *data, int len, int qos, int retain, bool store) ​

把消息放入发送队列等待发送(安信可 MQTT)。

axk_mqtt_client_destroy(axk_mqtt_client_handle_t client) ​

销毁 MQTT 客户端并释放资源(安信可 MQTT)。

axk_mqtt_set_config(axk_mqtt_client_handle_t client, const axk_mqtt_client_config_t *config) ​

修改 MQTT 客户端的配置(安信可 MQTT)。

axk_mqtt_client_register_event(axk_mqtt_client_handle_t client, axk_mqtt_event_id_t event, axk_event_handler_t event_handler, void *event_handler_arg) ​

注册 MQTT 事件回调函数(安信可 MQTT)。

axk_mqtt_client_get_outbox_size(axk_mqtt_client_handle_t client) ​

查询待发送消息队列的长度(安信可 MQTT)。

📂 阿里云 IoT SDK(aiot_mqtt_api.h) ​

aiot_mqtt_init(void) ​

初始化阿里云 IoT MQTT 客户端(阿里云 IoT SDK)。

aiot_mqtt_setopt(void *handle, aiot_mqtt_option_t option, void *data) ​

设置 MQTT 连接参数选项(阿里云 IoT SDK)。

aiot_mqtt_deinit(void **handle) ​

反初始化并释放 MQTT 客户端(阿里云 IoT SDK)。

aiot_mqtt_connect(void *handle) ​

发起与服务器的 MQTT 连接(阿里云 IoT SDK)。

aiot_mqtt_disconnect(void *handle) ​

断开 MQTT 连接(阿里云 IoT SDK)。

aiot_mqtt_reconn(void *handle) ​

尝试重新连接 MQTT 服务器(阿里云 IoT SDK)。

aiot_mqtt_heartbeat(void *handle) ​

发送心跳消息保持连接(阿里云 IoT SDK)。

aiot_mqtt_process(void *handle) ​

处理 MQTT 收发与回调(阿里云 IoT SDK)。

aiot_mqtt_pub(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos) ​

发布消息到指定主题(阿里云 IoT SDK)。

aiot_mqtt_sub(void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos, void *userdata) ​

订阅主题并注册接收回调(阿里云 IoT SDK)。

aiot_mqtt_unsub(void *handle, char *topic) ​

取消订阅指定主题(阿里云 IoT SDK)。

aiot_mqtt_recv(void *handle) ​

主动接收一条 MQTT 消息(阿里云 IoT SDK)。

📂 AWS IoT SDK(aws_iot_mqtt_client_interface.h) ​

aws_iot_mqtt_init(AWS_IoT_Client *pClient, const IoT_Client_Init_Params *pInitParams) ​

初始化 AWS IoT MQTT 客户端(AWS IoT SDK)。

aws_iot_mqtt_connect(AWS_IoT_Client *pClient, const IoT_Client_Connect_Params *pConnectParams) ​

按连接参数建立 MQTT 连接(AWS IoT SDK)。

aws_iot_mqtt_publish(AWS_IoT_Client *pClient, const char *pTopicName, uint16_t topicNameLen, IoT_Publish_Message_Params *pParams) ​

发布消息到指定主题(AWS IoT SDK)。

aws_iot_mqtt_subscribe(AWS_IoT_Client *pClient, const char *pTopicName, uint16_t topicNameLen, QoS qos, pApplicationHandler_t pApplicationHandler, void *pApplicationHandlerData) ​

订阅主题并注册消息回调(AWS IoT SDK)。

aws_iot_mqtt_resubscribe(AWS_IoT_Client *pClient) ​

重新订阅全部已订主题(AWS IoT SDK)。

aws_iot_mqtt_unsubscribe(AWS_IoT_Client *pClient, const char *pTopicFilter, uint16_t topicFilterLen) ​

取消订阅指定主题(AWS IoT SDK)。

aws_iot_mqtt_disconnect(AWS_IoT_Client *pClient) ​

断开 AWS IoT 的 MQTT 连接(AWS IoT SDK)。

aws_iot_mqtt_yield(AWS_IoT_Client *pClient, uint32_t timeout_ms) ​

保持连接并处理收发与回调(AWS IoT SDK)。

aws_iot_mqtt_attempt_reconnect(AWS_IoT_Client *pClient) ​

尝试重新连接 AWS IoT(AWS IoT SDK)。

📖 相关教程:MQTT 连接 · MQTTS 连接 · 连接阿里云 · 连接 AWS IoT · 连接腾讯云


常见问题 ​

❓ 这里没找到我想要的 API?
本页只收录本站教程中用到的接口。完整 API 见官方 SDK 源码各组件头文件:components/ 下每个模块的 include 目录(如 components/hosal_driver/include/hosal_uart.h),或官方仓库 Ai-Thinker-Open/Ai-Thinker-WB2。

❓ 同样功能的 API 为什么有 bl_、hosal_、bl_os_ 几套前缀?
这是 SDK 的分层设计:bl_* 是芯片级接口(直接操作寄存器),hosal_* 是统一硬件抽象层(屏蔽芯片差异,推荐使用),bl_os_* 是操作系统适配层,axk_* 是安信可封装,aiot_*/aws_iot_*/IOT_Template_* 是各云平台官方 SDK。新手优先用 hosal_* 与教程示例。

❓ 函数参数记不住怎么办?
每个分类末尾的「相关教程」都有完整可编译的示例工程,直接参考示例代码的调用方式即可;教程中每个示例都附有「本文 API 汇总」章节,说明各参数含义。

使用建议

编程时先想「我要干什么」→ 在本页找到对应分类 → 复制相关教程中的调用方式 → 按需修改参数。SDK 版本升级后接口可能有微调,以你本地 SDK 头文件为准。

Released under the MIT License. Build Time 2026-09-30 17:31:25