玩
转
G
D
K
3
读取 GPIO 输入及使用串口
在上一篇文章中,我们提到,格蠹科技的GDK3开发板为学习嵌入式编程提供了一个高效的试验环境,它支持多种实时OS系统,在上面可以使用C语言来开发各种嵌入式程序。几乎在所有的应用场景中,与用户交互都是最基本的功能。为此,我们需要模拟用户的输入以及对用户的响应。
我们的思路是,把一根引脚(比如 PB4)设置成输入,用一根杜邦线将其连接其他引脚,用以模拟用户输入;向串口打印一段信息表示 GDK3 的响应。
以下是几个关键步骤:
No. 1
玩转
GDK3
把引脚 PB4 设置成用于输入
我们使用如下的代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
第一行 RCC_APB2PeriphClockCmd 函数的作用是控制 APB2 总线上的外设时钟的开启或关闭。它是 STM32 库中用于配置系统时钟的一部分。在使用外设模块之前,需要启用相应的外设时钟。这一行的作用是启用 GPIOB 端口的时钟。需要指出的是,如果这行代码前面已经有了,不需要再写一次。
第二行至第四行配置一个结构体。其中第二行设置使用的引脚,第三行设置输入输出模式,它是一个枚举型数据,取值如下:
GPIO_Mode_AIN
//模拟输入,应用于ADC电压值采样输入
GPIO_Mode_IN_FLOATING
//浮空输入信号电平不确定,完全有外部信号决定,一般用于按键检测
GPIO_Mode_IPD
//下拉输入,输入口接下拉电阻(10K),无信号为低电平,有信号为高电平
GPIO_Mode_IPU
//上拉输入,输入口接上拉电阻(10K),无信号为高电平,有信号为低电平
GPIO_Mode_Out_OD
//开漏输出
GPIO_Mode_Out_PP
//推挽输出
GPIO_Mode_AF_OD
//复用开漏输出
GPIO_Mode_AF_PP
//复用推挽输出
这里我们设置为 GPIO_Mode_IPD 下拉输入模式。
第四行设置输入速度。最后一行让结构体生效。
No. 2
玩转
GDK3
读取输入信息
我们使用以下代码读取输入信息:
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4);
这个函数用于读取指定 GPIO 引脚的电平状态,返回值为0或者1,0表示低电平,1表示高电平。
No. 3
玩转
GDK3
向串口打印信息
printf 函数并没有把信息打印到串口,但是 fputc 函数是把字符打印到串口的。要把信息打印到串口,必须借助 fputc 的帮助。我们可以自己实现一个打印函数,调用 fputc。
下面是一段示例代码:
#define BUFSIZE 1024
char myprintf_buf[BUFSIZE];
/*
* redirect the message to COM
*/
void my_printf(const char* fmt, ...)
{
va_list args;
int n;
va_start(args, fmt);
n = vsnprintf(myprintf_buf, BUFSIZE, fmt, args);
va_end(args);
for(int i = 0; i < n; i++)
{
fputc(myprintf_buf[i],0);
}
}
以上便是几个主要的步骤,详细的过程请参照:https://www.nanocode.cn/wiki/docs/gdk3/gdk3-gebutton
当一切安排就绪,我们用一根杜邦线连接 PB4 和挥码枪上的 3V3 引脚,GDK3 就会打印一段信息,如下图所示:
用 GDK3 还可以玩出很多其它花样,如把GDK3 开发成 U盘、鼠标或者魔法键盘。关于其他的玩法,请参考:https://www.nanocode.cn/wiki/docs/gdk3
关于 GDK3 的配置,可以参考:https://www.nanocode.cn/#/gdk3/bom
参加格蠹科技的编程夏令营,即可自己动手实践,感受 GDK3 的强大功能和神奇魅力。编程夏令营还在报名中,详情请看:https://mp.weixin.qq.com/s/ejX4I_uQJaHm-MyNRzG_qw
END
【盛格塾】
正心诚意,格物致知
以人文情怀审视软件,以软件技术改变人生
格友公众号
盛格塾小程序
扫描上方二维码或搜索“盛格塾”小程序
可以阅读更多文章和有声读物
玩转
GDK3
往期回顾