概述
sHMIctrl 留有6个扩展IO口(最多10个IO口):
- 6个扩展IO口可以设置成输入、输出、高阻、AD四个状态;这4种状态可开机指定
- 其中2个IO口可以设置为PWM状态;PWM需语句设置
- 同时6个IO口还可以设置成6个按钮输入
- 新版本支持两个串口修改为IO口
端口功能表
端口 | 高阻 | 输入 | 输出 | AD | PWM | 备注 |
---|---|---|---|---|---|---|
E1(gpio0) | ✔ | ✔ | ✔ | ✔ | × | |
E2(gpio1) | ✔ | ✔ | ✔ | ✔ | × | |
E3(gpio2) | ✔ | ✔ | ✔ | ✔ | × | |
E4(gpio3) | ✔ | ✔ | ✔ | ✔ | × | |
E5(gpio4) | ✔ | ✔ | ✔ | ✔ | ✔ | |
E6(gpio5) | ✔ | ✔ | ✔ | ✔ | ✔ | |
TX2(gpio6) | ✔ | ✔ | 串口2 | |||
RX2(gpio7) | ✔ | ✔ | 串口2 | |||
TX1(gpio8) | ✔ | ✔ | 串口1 | |||
RX1(gpio9) | ✔ | ✔ | 串口1 |
注意: - 串口1、串口2的gpio6~9 是通过150欧姆的限流电阻接出,因此建议只做输入,做输出的话,带负载能力有限 - 串口2有10K电阻上拉
输入模式
以E1号端口(GPIO0)来举例:
gpio_mode(0,2); //设置gpio0为输入模式
echo(gpio_inp(0)); //输出0表示低电平 输出1表示高电平
输出模式
以E1号端口(GPIO0)来举例:
gpio_mode(0,1); //设置gpio0为输出模式
gpio_out(0,1); //设置输出为高电平
//gpio_out(0,0); //设置输出为低电平
AD模式
以E1号端口(GPIO0)来举例:
gpio_mode(0,3); //设置gpio0为AD模式
echo(gpio_ad(0)); //获取端口的AD值 0~4095
高阻模式
以E1号端口(GPIO0)来举例:
gpio_mode(0,0); //设置gpio0为高阻模式
PWM模式
以E5号端口(GPIO4)来举例:
gpio_pwmdef(1000); //定义PWM频率为1000hz
gpio_mode(4,4); //设置gpio4为pwm模式
gpio_pwmset(4,32768);//设置gpio4的占空比为50%,占空比参数0~65535
模式表
mode值 | 类型 | 语句 |
---|---|---|
0 | 关闭,高阻 | |
1 | 输出,推挽输出,电流可以驱动5mA的设备,可以短时间点亮白光LED,长时间需要加MOS控制或者限流电阻 | gpio_out(n,c); |
2 | 输入,上拉 | gpio_inp(n)获取IO电平 |
3 | AD模式,12位AD,但是由于没有模拟GND,不能做高精度的采样,常用于电池电压检测等 | gpio_ad(n)获取AD值 |
4 | PWM,只有E5 E6两个端口支持,由于属于一路PWM,因此只能设置相同的频率,但是2个端口可以分别设置各自的占空比 | gpio_pwmset(n,per)设置占空比 |
目录
其他资料: