回复
梅科尔工作室——驱动子系统开发
wx62e8be090d392
发布于 2022-8-2 16:35
浏览
0收藏
4.1 GPIO
1.GPIO API介绍
2.查看LED对应的GPIO引脚
3.操作GPIO点亮LED
打开“B1_ basic_led_blink" 工程的led_ example.c文件,可在代码中查看实现LED以1S的频率闪烁代码。
static void LedTask(void)
{
//初始化GPIO
GpioInit();
//设置GPIO_2的复用功能为普通GPIO
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
//设置GPIO_2为输出模式
GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);
while (1)
{
//设置GPIO_2输出高电平点亮LED灯
GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 1);
//延时1s
usleep(1000000);
//设置GPIO_2输出低电平熄灭LED灯
GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 0);
//延时1s
usleep(1000000);
}
}
4.2 GPIO中断
1. GPIO中断API介绍
2.查看按键对应的GPIO引脚
3. GPIO中断读取按键状态
打开"B2_ basic_ button"工程的button_ example.c文件,可在代码中查看实现按键控制LED灯亮灭的代码。
static void F1_Pressed(char *arg)
{
(void)arg;
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);
}
static void F2_Pressed(char *arg)
{
(void)arg;
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 0);
}
static void ButtonExampleEntry(void)
{
GpioInit();
//初始化LED灯
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_GPIO_DIR_OUT);
//初始化F1按键,设置为下降沿触发中断
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_IN);
IoSetPull(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_PULL_UP);
GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_INT_TYPE_EDGE,
WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F1_Pressed, NULL);
//初始化F2按键,设置为下降沿触发中断
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_IN);
IoSetPull(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_PULL_UP);
GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_INT_TYPE_EDGE,
WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F2_Pressed, NULL);
}
4.3 PWM
1.PWM API介绍
2.查看LED对应的GPIO引脚
3.输出PWM改变LED亮度
打开“B3_ basic pwm_ led"工程的pwm_ example.c文件,可在代码中查看实现输出不同占空比的PWM来改变LED的亮度代码。
static void PWMTask(void)
{
unsigned int i;
//初始化GPIO
GpioInit();
//设置GPIO_2引脚复用功能为PWM
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_PWM2_OUT);
//设置GPIO_2引脚为输出模式
GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);
//初始化PWM2端口
PwmInit(WIFI_IOT_PWM_PORT_PWM2);
while (1)
{
for (i = 0; i < 40000; i += 100)
{
//输出不同占空比的PWM波
PwmStart(WIFI_IOT_PWM_PORT_PWM2, i, 40000);
usleep(10);
}
i = 0;
}
}
4.4 ADC
1. ADC APl介绍
2.查看ADC对应的GPIO引脚
3. ADC读取GPIO的电压值
打开“B4_ _basic_ adc"工程的adc_ example.c文件,可在代码中查看实现读取ADC通道5的电压值的代码。
![image.png](https://dl-harmonyos.51cto.com/images/202208/e5c00163993f594844a8976c471f5466de5053.png?x-oss-process=image/re
/****获取电压值函数****/
static float GetVoltage(void)
unsigned int ret;
unsigned short data;
ret = AdcRead(WIFI_ IOT ADC .CHANNEL_ 5, &data, WIFI. IOT ADC EQU_ MODEL 8,
WIFI_ IOT_ ADC_ CUR_ BAIS_ DEFAULT, exff);
if (ret != WIFI. IOT SUCCESS)
printf("ADC Read Fail\n");
}
return (float)data * 1.8 * 4 1 4096.0;
}
4.5 I2C
1. I2C API介绍
2.查看NFC的I2C对应的GPIO引脚
3. I2C读写NFC芯片
打开"B5_ basic i2c_ nfc"工程的i2c_ example.c文件,可在代码中查看实现NCF读写的代码。
4.6 UART
1. UART API介绍
2.查看UART1对应的GPIO引脚
3. UART读写数据
打开“B6_ basic uart"工程的uart_ example.c文件,可在代码中查看实现UART读写数据。
分类
标签
赞
收藏
回复
相关推荐