找回密码
 立即注册
楼主: DHBT2023

求助 库函数

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

545

积分

高级会员

积分
545
发表于 2024-8-17 20:58:31 | 显示全部楼层
截图202408172057314212.jpg 还是这样 找不到原因。哪位高手帮个忙

点评

目前看,你确实C的基础比较弱一些,稍微补一点C语言基础的知识,会对你的帮助更大 ,当然补基础的时候一定不要耽误写程序 哪里不会补哪里,能快快的强大起来。 key_multi(void),你把void从括号里拿出来写到前面,  详情 回复 发表于 2024-8-17 21:05
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:224
  • 最近打卡:2025-10-18 23:26:17
已绑定手机

36

主题

561

回帖

2002

积分

荣誉版主

积分
2002
发表于 2024-8-17 20:59:47 | 显示全部楼层
我没看过他的源码,但是从你的截图中看出来确实你用的压根儿对函数的用法上理解就有问题
先上图说第一个问题
这里,函数是带返回值的,后面也有注释,也就是说,
key_multi()这个函数,返回一个unsigned char类型的值。
回答1.jpg
然后说第二个问题

unsigned char key_multi(void);
而你的问题恰恰就处在这里,函数的尾部括号是(void),也就是没有入口参数,
但你调用的时候却把11写进去,首先写进去不管这个值对不对,
编译器就一定会报错,因为函数没有入参。
其次说这个11是哪来的,是你理解的返回键值为1对吗?

你定义一个变量,比如unsigned char KeyNum,
KeyNum用来保存函数key_multi()的返回值,
那么这个时候是KeyNum = key_mult();//将读到的键和键值保存在KeyNum

通过判断KeyNum的结果再去判断哪个按键被按下以及对应的按键功能,
那么就是if(KeyNum == XXX),去做判断就可以。
(红色字体为啰嗦的两句,可以不看)
因为只看了你两张截图,KeyNum是个复合值,那么得去做分离,看他的程序里有没有对复合值做处理,
有的话,你就接着按照他的程序处理继续写下去就行;
如果没有,无非就是#define里对按键的声明
11 12 13
21 22 23
31 32 33
41 42 43
把KeyNum的十位和个位做一个分离,然后根据得出的结果判断是哪一个按键被按下,执行单击、双击、长按的。
回答2.jpg


希望能帮到你,但也希望你可以再继续加强下基础,加油。


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:224
  • 最近打卡:2025-10-18 23:26:17
已绑定手机

36

主题

561

回帖

2002

积分

荣誉版主

积分
2002
发表于 2024-8-17 21:05:38 | 显示全部楼层
DHBT*** 发表于 2024-8-17 20:58
还是这样 找不到原因。哪位高手帮个忙


目前看,你确实C的基础比较弱一些,稍微补一点C语言基础的知识,会对你的帮助更大 ,当然补基础的时候一定不要耽误写程序
哪里不会补哪里,能快快的强大起来。
key_multi(void),你把void从括号里拿出来写到前面,这个。。。
前一个回答已经写明了应该怎么用,你看一下,应该能有所帮助。
回答3.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:464
  • 最近打卡:2025-10-18 08:01:27

23

主题

292

回帖

1708

积分

金牌会员

积分
1708
发表于 2024-8-17 22:19:20 | 显示全部楼层
本帖最后由 lezjin 于 2024-8-17 22:34 编辑

先学习下C语言,B站很多视频,可以先刷一遍,
另外推荐再看经典C语言书籍,在学习单片机会好一些。
C Primer Plus
C和指针
C专家编程
C陷阱和缺陷,都看一遍,有个大概的印象,后续碰到不明白的再查资料
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

545

积分

高级会员

积分
545
发表于 2024-8-17 22:29:59 | 显示全部楼层
Yim_*** 发表于 2024-8-17 21:05
目前看,你确实C的基础比较弱一些,稍微补一点C语言基础的知识,会对你的帮助更大 ,当然补基础的时候一 ...

谢谢点拨。c 确实不行,是要认真学习基础
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

545

积分

高级会员

积分
545
发表于 2024-8-17 22:40:49 | 显示全部楼层
Yim_*** 发表于 2024-8-17 20:59
我没看过他的源码,但是从你的截图中看出来确实你用的压根儿对函数的用法上理解就有问题
先上图说第一个问 ...

谢谢回复,深受启发!

点评

不客气  详情 回复 发表于 2024-8-17 23:29
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:224
  • 最近打卡:2025-10-18 23:26:17
已绑定手机

36

主题

561

回帖

2002

积分

荣誉版主

积分
2002
发表于 2024-8-17 23:29:45 | 显示全部楼层
DHBT*** 发表于 2024-8-17 22:40
谢谢回复,深受启发!

不客气
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

545

积分

高级会员

积分
545
发表于 2024-8-18 01:05:44 | 显示全部楼层
so*** 发表于 2024-8-17 20:58
这个函数会返回unsigned char,也就是键值和键功能,要调用就直接??==key_multi();或直接if(key_multi(v ...

谢谢
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-04 11:33:11

12

主题

124

回帖

545

积分

高级会员

积分
545
发表于 2024-8-18 01:06:29 | 显示全部楼层
在大家的帮助下。第一问题终于解决了。再次谢谢大家!
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-18 23:35 , Processed in 0.150663 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表