GDK3 模拟按键响应
目标
一个 GDK3 就相当于物联网中的一个设备,这个设备必须能够与用户交互,用户的行为可能是一个无线信号,或者一个物理按键。GDK3 要能够响应这些信号。
思路
把一根引脚(比如 PB4)设置成输入,用一根杜邦线将其连接其他引脚,用以模拟用户输入;向串口打印一段信息表示 GDK3 的响应。
开发过程
1. 引入 gem3 项目源码,我们在 gem3 项目的基础上开发。
把 gdk3sdk(https://gedu.oss-cn-beijing.aliyuncs.com/gdk3/gdk3sdk.zip)中的 gem3 目录拷贝一份,并更名为 gebutton,并把该目录中所有文件名中有 gem3 的地方全部改成 gebutton,以及 makefile 中第二行的 Name 也要改成 gebutton。
按照 GDK3 上手系列之三,编译烧录文件,确保原先的代码没有任何错误。
2. 确保串口打印能够正常工作。
参见 GDK3 上手系列之四,如果不能正常工作,在 gebutton 中加入如下代码:
#define BUFSIZE 1024
char myprintf_buf[BUFSIZE];
/*
* redirect the printing 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);
int i = 0;
for(i = 0; i < n; i++)
{
fputc(myprintf_buf[i],0);
}
}
需添加头文件 stdarg.h。
3. 把引脚 PB4 设置成用于输入信号。
在 GPIO_Toggle_INIT 函数中添加以下代码:
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);
4. 添加响应函数。
我们每隔 100ms 读取 PB4 引脚的数值,如果有值,就打印一段信息,表示收到了用户的输入。以下是一段示例代码:
int gd_checkpb4(int checkpb4)
{
int delay = 100;
int counter = 0;
while(checkpb4){
Delay_Ms(delay);
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4))
{
my_printf("I received a message.\r\n");
}
}
}
5. 调用相应函数。
在 main 函数中把 gd_blink 注释掉,同时添加以下代码:
int checkpb4 = 1;
gd_checkpb4(checkpb4);
6. 参照 GDK3 上手系列之三,编译和烧录文件。
7. 参照 GDK3 上手系列之四,观测串口打印信息。
用一根杜邦线连接 PB4 和挥码枪上的 3V3 引脚,GDK3 就会打印一段信息,如下图所示:
作者:李宜桐 创建时间:2024-05-20 15:30
最后编辑:李宜桐 更新时间:2024-05-24 18:52
最后编辑:李宜桐 更新时间:2024-05-24 18:52