Hi3861的配置引脚的功能的API,hi_io_set_func()

函数原型

unsigned int hi_io_set_func(unsigned int id, unsigned char val);

参数说明

unsigned int id:这是一个枚举类型的参数(hi_io_name),用于指定你要配置的具体GPIO引脚编号

unsigned char val:这也是一个枚举类型的参数,用于指定该GPIO引脚将要被复用的功能。每个GPIO引脚都有一套独立的功能枚举定义。例如,对于GPIO9,HI_IO_FUNC_GPIO_9_GPIO表示将其作为普通GPIO,而 HI_IO_FUNC_GPIO_9_PWM0_OUT则表示将其复用为PWM0的输出引脚

使用流程

在使用 hi_io_set_func()时,通常需要遵循一个清晰的步骤,特别是当引脚最终用于PWM等复杂功能时:

1.​初始化GPIO​:首先调用 IoTGpioInit(id)初始化目标引脚。

2.​设置复用功能​:接着调用 hi_io_set_func(id, val),将引脚配置为所需的功能(如PWM、I2C等)。

3.(可选)设置引脚方向​:如果配置为普通GPIO,需使用 IoTGpioSetDir()设置输入或输出方向。

4.初始化并启动功能模块​:如果配置的是PWM、I2C等,还需调用相应的初始化函数(如 IoTPwmInit)和启动函数(如 IoTPwmStart)。

代码实例

将GPIO9配置为PWM0输出(实现呼吸灯)

#include "iot_gpio.h"

#include "hi_io.h"

#include "iot_pwm.h"

#define PWM_GPIO 9

#define PWM_PORT 0 // PWM0通道

// 初始化

IoTGpioInit(PWM_GPIO);

// 关键步骤:将GPIO9复用为PWM0输出功能

hi_io_set_func(HI_IO_NAME_GPIO_9,HI_IO_FUNC_GPIO_9_PWM0_OUT);//HI_IO_NAME_GPIO_9代表GPIO9引脚, HI_IO_FUNC_GPIO_9_PWM0_OUT则表示将其复用为PWM0的输出引脚

IoTPwmInit(PWM_PORT);  // PWM_PORT表示PWM的端口号

// 启动PWM,占空比50%,频率2kHz (160MHz / 80000 = 2kHz)

IoTPwmStart(PWM_PORT, 50, 80000); // PWM_PORT为PWM的端口号,50表示PWM占空比为50%,80000则表示PWM频率为80000。

重要注意事项

复用功能唯一性​:一个GPIO引脚在某一时刻只能作为一种功能使用。通过hi_io_set_func()设定后,该引脚即工作于指定模式,直到下次更改。

功能枚举值​:参数val的取值与具体的GPIO引脚绑定,不同引脚的可用功能枚举不同,使用时最好查阅手册或头文件(如 hi_io.h)以确定正确的枚举值。例如,GPIO9的PWM功能对应值可能是5,而GPIO11的对应值则不同。

​与GPIO方向设置的关系​:当引脚被复用为PWM、I2C等非普通GPIO功能时,通常无需也不应再调用​ IoTGpioSetDir()来设置引脚方向,因为复用功能本身已经确定了引脚的行为方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值