![63395d4364ff3c34d7e99dd4104a2dc6.png](https://img-blog.csdnimg.cn/img_convert/63395d4364ff3c34d7e99dd4104a2dc6.png)
有些时候我们并不满足监控数据,还想定义一些自己的按键,比如当我按下按钮时,系统电源关闭,再按下按钮时系统电源开启,怎么做?这个功能其实使用前面所说的外设窗口也是完成能完成要求的,麻烦的是,如果使用外设窗口,要控制 IO 口,那你每次都得找到对应的 IO 口才行,很是麻烦,但是使用按键就会简单许多。
这个时候就我们就需要了解 KEIL 中另一个有趣的东西——工具箱(ToolBox)。
以设置 GPIOA.4 为例,定义一个控制这个引脚的按键。
首先,新建一个文件:
![1d76fd2684c19110b559f46a461e71e4.png](https://img-blog.csdnimg.cn/img_convert/1d76fd2684c19110b559f46a461e71e4.png)
然后保存为 OspreyDebug.ini 文件:
![33e2933f42fbfcc9d4eb2bbe4fe32351.png](https://img-blog.csdnimg.cn/img_convert/33e2933f42fbfcc9d4eb2bbe4fe32351.png)
输入以下内容:
![02eb107861dc7521b23211751d4c3cee.png](https://img-blog.csdnimg.cn/img_convert/02eb107861dc7521b23211751d4c3cee.png)
保存文件后,将其添加到工程中,这里我采用模拟的方式,所以在模拟中添加,如果你是在线调试,那么在另一个位置添加即可:
![e5249cb192470f87a5f98ce55fab3306.png](https://img-blog.csdnimg.cn/img_convert/e5249cb192470f87a5f98ce55fab3306.png)
之后进入 Debug 模式即可,在这里你可以看到你定义的按键:
![c55e6002474fa167986fc09e41c5ad60.png](https://img-blog.csdnimg.cn/img_convert/c55e6002474fa167986fc09e41c5ad60.png)
当你按下按键时,就会出现如下消息:
![ede51491b858ed9cc166bc9f3d2d151d.png](https://img-blog.csdnimg.cn/img_convert/ede51491b858ed9cc166bc9f3d2d151d.png)
当你从外设窗口查看时(关于这个可以查看:窗口展示),也能观察到这个 IO 引脚的变化:
![44044c0d84b253c98a39a6e569a8bd75.png](https://img-blog.csdnimg.cn/img_convert/44044c0d84b253c98a39a6e569a8bd75.png)
这里需要注意的是:
以上函数采用的是 读-改-写 的方式更改某一个位,很可能在更改中意外的修改其它引脚,所以最好采用别的方式修改某一个引脚(比如使用位带操作、BRR 寄存器操作、互斥访问、关中断之类的)。这个涉及到资源互斥的知识,可以看前面的内容(信号量)。
事实上,你不仅仅可以用按键做一个 IO 口的翻转,它还能做更复杂的事情,按键只是作为一个触发入口而已,具体干什么事情就由你们自己发挥想象了。
如果有帮助,记得点个赞再走哦,谢谢支持!
下周预告:.ini 文件的使用方法?
欢迎关注微信公众号:emOsprey
原文链接:
KEIL调试为啥不创建一个自定义按键?mp.weixin.qq.com![v2-2d9ceed78978badf52f685b50ced44c6_ipico.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=8000e5c6-5536-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-2d9ceed78978badf52f685b50ced44c6_ipico.jpg)