IoSetFunc(IOT_PWM_BEEP, 5) Hi3861函数参数解释
问题
在配置pwm时,IoSetFuc(WifiIotIoName id, unsigned char val),前面的id 即为设置的引脚编号。而后的val是什么就让人摸不着头脑。
unsigned int IoSetFunc(unsigned int id, unsigned char val)
{
if (id >= HI_GPIO_IDX_MAX) {
return IOT_FAILURE;
}
return hi_io_set_func((hi_io_name)id, val);
}
继续查看hi_io_set_func属性:
hi_u32 hi_io_set_func(hi_io_name id, hi_u8 val);
右键查看hi_u8属性,转到hi_io.h头文件中
hi_u32 hi_io_set_func(hi_io_name id, hi_u8 val);
/**
* @ingroup iot_io
* @brief Obtains the I/O multiplexing.CNcomment:获取某个IO复用功能。CNend
*
* @par 描述:
* Obtains the I/O multiplexing.CNcomment:获取某个IO复用功能。CNend
*
* @attention None
* @param id [IN] type #hi_io_name,I/O index.CNcomment:硬件管脚。CNend
* @param val [OUT] type #hi_u8*,I/O multiplexing.CNcomment:IO复用功能。CNend
*
* @retval 0 Success
* @retval #HI_ERR_GPIO_INVALID_PARAMETER Failure. Input invalid.
* @par 依赖:
* @li hi_io.h:Describes I/O APIs.CNcomment:文件用于描述IO相关接口。CNend
* @see hi_io_set_func。
*/
在同一文件中找到
typedef enum {
HI_IO_FUNC_GPIO_9_GPIO,
HI_IO_FUNC_GPIO_9_I2C0_SCL,
HI_IO_FUNC_GPIO_9_UART2_RTS_N,
HI_IO_FUNC_GPIO_9_SDIO_D2,
HI_IO_FUNC_GPIO_9_SPI0_TXD,
HI_IO_FUNC_GPIO_9_PWM0_OUT,
HI_IO_FUNC_GPIO_9_I2S0_MCLK = 7,
} hi_io_func_gpio_9;
解答
现在答案就很明了了。GPIO9对应的是PWM0;因此在GPIO复用时,输入5即选择使用PWM功能,类似的,如果是IoSetFunc(9,1),即采用I2C_scl端口。