鸿蒙上点亮LED灯
本文重点:如何编写点亮LED灯程序如何编译烧录点亮LED灯程序如何调试点亮LED灯程序
步骤
步骤一:添加点亮LED源码文件
新增myled文件夹
在。applicationsBearPiBearPiHMNanomple路径下新建一个myled目录,用于存放业务源码文件。
新增ledexample。c文件
在。applicationsBearPiBearPiHMNanomplemyled路径下新建一个ledexample。c文件,该文件为业务源码文件。
新增BUILD。gn文件
在。applicationsBearPiBearPiHMNanomplemyled路径下新建一个BUILD。gn文件,该文件为业务源码编译脚本。
步骤二:添加点亮LED灯源码
代码如下:includestdio。hincludeunistd。hincludeohosinit。hincludewifiiotgpio。hincludewifiiotgpioex。hvoidled(void){GpioInit();初始化GPIOIoSetFunc(WIFIIOTIONAMEGPIO2,WIFIIOTIOFUNCGPIO2GPIO);设置GPIO2的复用功能为普通GPIOGpioSetDir(WIFIIOTIONAMEGPIO2,WIFIIOTGPIODIROUT);设置GPIO2为输出模式GpioSetOutputVal(WIFIIOTIONAMEGPIO2,1);设置GPIO2输出高电平点亮LED灯}APPFEATUREINIT(led);
步骤三:编写业务编译构建文件BUILD。gn
编写用于将业务构建成静态库的BUILD。gn文件:
在。applicationsBearPiBearPiHMNanomplemyled下的BUILD。gn文件中添加如下代码:staticlibrary(myled){sources〔led。c〕includedirs〔utilsnativeliteinclude,baseiothardwareinterfaceskitswifiiotlite〕}
staticlibrary中指定业务模块的编译结果,为静态库文件libmyled。a,开发者根据实际情况完成填写。
sources中指定静态库。a所依赖的。c文件及其路径,若路径中包含则表示绝对路径(此处为代码根路径),若不包含则表示相对路径。
includedirs中指定source所需要依赖的。h文件路径。
步骤四:编写模块编译构建文件BUILD。gn
编写模块BUILD。gn文件,指定需参与构建的特性模块。
在。applicationsBearPiBearPiHMNanomple下的BUILD。gn文件中添加如下代码:import(buildliteconfigcomponentlitecomponent。gni)litecomponent(app){features〔myled:myled,〕}
myled是相对路径,指向:。applicationsBearPiBearPiHMNanomplemyledBUILD。gn
led是目标,指向:。applicationsBearPiBearPiHMNanomplemyledBUILD。gn中的staticlibrary(myled)
Led闪烁实验
代码如下:调试LED程序includeohosinit。hincludeunistd。hincludewifiiotgpio。hincludewifiiotgpioex。hvoidleddelay(void){GpioInit();IoSetFunc(WIFIIOTIONAMEGPIO2,WIFIIOTIOFUNCGPIO2GPIO);GpioSetDir(WIFIIOTIONAMEGPIO2,WIFIIOTGPIODIROUT);for(inti0;i10;i){GpioSetOutputVal(WIFIIOTIONAMEGPIO2,1);usleep(1000000);GpioSetOutputVal(WIFIIOTIONAMEGPIO2,0);usleep(1000000);}}APPFEATUREINIT(leddelay);
总结
如下:includeohosinit。h包含APPFEATUREINIT这个函数baseiothardwareinterfaceskitswifiiotlite相对路径在Z:homebearpiBearPIcodebearpihmnanobaseiothardwareinterfaceskitswifiiotlitewifiiotgpioex。hZ:homebearpiBearPIcodebearpihmnanobaseiothardwareinterfaceskitswifiiotlitewifiiotgpio。hIoSetFunc》gpio的设置GpioSetDir》gpio的模式
结果如下图: