梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发

xiran61
发布于 2022-8-2 11:23
浏览
0收藏

1.OpenHarmony驱动子系统开发——操作GPIO

1.1 GPIO API介绍

wifiiot_gpio.h接口简介:
这个.h中包含声明GPIO接口函数,这些功能用于初始化GPIO梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区
wifiiot_gpio_ex.h接口简介:

这个.h中包含声明扩展的GPIO接口函数,这些功能用于设置GPIO拉力和驱动器强度。梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

1.2 查看LED对应的GPIO引脚

LED对应的GPIO引脚是GPIO2通过控制GPIO2输出的的电平信号来实现LED灯的闪烁。

高电平时点亮LED灯。

低电平时熄灭LED灯。梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

1.3 操作GPIO点亮LED

打开Visual Studio Code软件。点击文件,打开文件夹,点击映射文件—>home—>bearpi—>code—>打开,在“项目名\applications\BearPi\BearPi-HM_Nano\sample”文件下打开"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);
//设置GP1O_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灯T
    GpiosetoutputVal(WIFI_IOT_GPIO_IDX_2,0);

    //延时1s
    usleep( 1000000);
}

}

2.OpenHarmony驱动子系统开发——GPIO中断

2.1 GPIO中断API介绍

wifiiot_gpio.h接口简介:

wifiliot_gpio.h中包含声明GPIO中断相关函数。
梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

2.2 查看按键对应的GPIO引脚

F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

2.3 操作GPIO点亮LED

打开Visual Studio Code软件。点击文件,打开文件夹,点击映射文件—>home—>bearpi—>code—>打开,在“项目名\applications\BearPi\BearPi-HM_Nano\sample”文件下打开“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_GPI0_11,WIFI_IOT_GPIO_DIR_IN);
IoSetPull(wIFI_IOT_IO_NAME_GPI0_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_GPI0_12,             WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
GpiosetDir(WIFI_IOT_IO_NAME_GPI0_12,WIFI_IOT_GPIO_DIR_IN);
IosetPull(wIFI_IOT_IO_NAME_GPI0_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);

}

3.OpenHarmony驱动子系统开发——PWM输出

3.1 PWM API介绍

功能接口:
梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

3.2输出PWM改变LED亮度

代码位置
"B3_basic_pwm_led"工程 → “pwm_example.c”

输入不同占空比的PWM来改变LED的亮度代码。
梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

4. ADC采样

4.1 ADC API介绍

4.1.1 wifiiot_adc.h 接口简介:

这个wifiiot_adc.h中包含声明ADC接口函数。
函数:AdcRead (WifiIotAdcChannelIndex channel, unsigned short * data, WifiIotAdcEquModelSel equModel, WifiIotAdcCurBais curBais, unsigned short rstCnt )
功能接口:梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区
参数梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

4.2 查看ADC对应的GPIO引脚

本案例将使用板载用户按键F1来模拟GPIO口电压的变化。GPIO_11对应的是 ADC Channel 5 ,所以需要编写软件去读取ADC Channel 5的电压。梅科尔工作室-鸿蒙十四天实战培训笔记(day4)--驱动子系统开发-鸿蒙开发者社区

分类
收藏
回复
举报
回复
    相关推荐