前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在全志H616核桃派开发板上进行基于WiringPi的IO控制

在全志H616核桃派开发板上进行基于WiringPi的IO控制

作者头像
阿志小管家
发布2024-05-26 11:22:35
810
发布2024-05-26 11:22:35
举报

GPIO指令

WiringPi对核桃派的物理引脚进行了封装,定义了一套自己的引脚编号,为了保证代码兼容性,目前核桃派的wPi引脚定义和树莓派一致。

编译和运行C代码

我们来体验一下WirngPi的编译和运行方法,先在核桃派当前目录新建一个test.c文件,输入下面内容(该代码实现在终端打印“Hello WalnutPi信息”):

代码语言:javascript
复制
#include<stdio.h>

intmain(void)
{
printf("Hello WalnutPi\n");

return0;
}

编译代码,由于WiringPi是以动态库存在,所以编译要加上-lwiringPi。下面指令表示将当前目录下的test.c文件编译成可执行文件test。

代码语言:javascript
复制
gcc -Wall -o test test.c -lwiringPi

运行刚刚编译出来的程序:

代码语言:javascript
复制
sudo ./test

可以看到执行后终端打印出:Hello WalnutPi信息:

Geany IDE (核桃派本地)

核桃派桌面系统出厂预装了Geany IDE ,位于开始–开发栏,使用Geany可以实现C编程和编译运行。

打开Geany:

新建一个文件,输入下面的测试代码,保存为.c文件。

代码语言:javascript
复制
#include<stdio.h>

intmain(void)
{
printf("Hello WalnutPi\n");

return0;
}

然后配置带WiringPi的C代码编译和生成命令。打开生成–设置生成命令

Build命令最后的地方加入 -lwiringPi (注意区分大小写)。这个命令用于生成可执行文件,加入后完整命令为:

代码语言:javascript
复制
gcc -Wall -o "%e""%f" -lwiringPi

Execute命令前面加入 echo “root” | sudo -S (注意区分大小写)。这个命令用于运行前面生成的可执行文件(程序),加入后完整命令为:

代码语言:javascript
复制
echo"root"|sudo -S "./%e"

配置完成后点击Build按钮,下方可以看到编译结果信息。编译成功的话当前目录下会生成一个可执行文件。

再点执行按钮,可以看到弹出一个新终端,打印了“Hello WalnutPi”信息,说明代码被成功编译和执行。

VSCode IDE(ssh远程)

除了使用核桃派自带Geany IDE外,这里说一下使用VSCode IDE 远程操作方法。关于VScode IDE远程方法请参考: VSCode IDE(ssh远程) 章节内容,这里不再重复。

VScode IDE需要在终端下使用命令来编译,好处是C编程比较直观,而且可以远程操作:

编写代码:

代码语言:javascript
复制
gcc -Wall -o test test.c -lwiringPi

执行程序:

代码语言:javascript
复制
sudo ./test

IO控制

点亮第1个LED
代码语言:javascript
复制
/*
实验名称:点亮第1个LED
实验平台:核桃派
说明:点亮核桃派开发板上的LED
*/

#include<stdio.h>
#include<wiringPi.h>

// 核桃派的板载LED引脚wPi编码为33
#defineLED33

intmain(void)
{
printf("WalnutPi LED\n");

wiringPiSetup();

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);//点亮,LOW熄灭。

return0;
}
按键
代码语言:javascript
复制
/*
实验名称:按键
实验平台:核桃派
说明:按键按下点亮LED,松开熄灭LED
*/

#include<stdio.h>
#include<wiringPi.h>


// 核桃派的板载LED引脚wPi编码为33,按键KEY为32
#defineLED33
#defineKEY32

intmain(void)
{
printf("WalnutPi Pi KEY\n");

wiringPiSetup();

pinMode(LED, OUTPUT);

pinMode(KEY, INPUT);
pullUpDnControl(KEY, PUD_UP);//开启上拉电阻

while(1)
{
if(digitalRead(KEY)== LOW)// 按键按下
{
digitalWrite(LED, HIGH);// 点亮LED
}

else
{
digitalWrite(LED, LOW);// 熄灭LED
}
}

return0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GPIO指令
  • 编译和运行C代码
  • Geany IDE (核桃派本地)
  • VSCode IDE(ssh远程)
  • IO控制
    • 点亮第1个LED
      • 按键
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档