概述
本页汇总 Ai-WB2 SDK(Ai-Thinker-Open/Ai-Thinker-WB2,版本 release_bl_iot_sdk_1.6.40)在本站全部教程中使用到的核心 API,按功能分类整理,每张卡片给出函数原型与一句话说明。
用大白话讲:SDK 就像一套积木,API 就是每块积木的"接口说明"——想知道"怎么让 LED 亮""怎么连 Wi-Fi",来这里按分类找函数名,再点「相关教程」看完整用法。
系统与内核(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)
停止麦克风语音采集。
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 控制器资源。
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 文件系统接口)。
aos_unlink(const char *path)
删除指定的文件(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。
网络通信(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 头文件为准。

