keil这都是灰的到底是什么原因

img

为啥这里一直是灰的,魔法棒也点不了,破解说是成功了,也写了程序了,就是灰的

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/741440
  • 这篇博客你也可以参考下:微信小程序 在开发者工具调试可以,在真机调试和预览没数据的解决办法
  • 除此之外, 这篇博客: Keil实现软件版本号与实际编译生成的目标代码版本自动一一对应中的 实现办法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • C语言编译器生成目标代码时,会生成常量字符串:__DATE__ 、__TIME__,分别表示编译的日期与时间。将这两个字符串作为版本号的一部分,每次编译时都会自动变化,这样就达到了版本号与代码编译版本唯一对应的目的。
    例如,如下代码通过调试打印接口输出版本号及设备UID等信息:

    printf("\r\n******************************************************************\r\n");
    printf("                        欢迎使用XXXX流量计算机\r\n");
    printf("                   固件编译时间:%s %s\r\n", __DATE__, __TIME__);    
    printf("                   UID: %08X %08X %08X\r\n", UID[0], UID[1], UID[2]);
    printf("******************************************************************\r\n");
    

    问题就这么轻松愉快地解决了?没有这么简单!
    多编译运行几次,你会发现,并不是每次编译时, __DATE__ 、__TIME__ 都会变化。只有引用了这两个宏的代码所在的源文件有修改,进行了重新编译,__DATE__ 、__TIME__才会变化。这与我们的期望还是有一定差距。我们期望的是只要整个工程有任何源文件被编辑、编译、链接,都能够更新__DATE__ 、__TIME__,这样才能保证版本号与编译版本的一一对应。
    解决办法有两个:
    一种办法是每次编译都使用build-all选项,将所有源文件重新编译,这有点太笨了,费时费力也不讨好,当然不是我想说的。
    另一种办法是设置需要输出__DATE__ 、__TIME__作为子版本号的代码所在源文件在每次执行编译操作时都能被重新编译,这才是聪明的办法,而且至少在keil开发环境中很容易实现。步骤如下:

    • 在keil项目管理树上选择对应源文件,比如main.c,右键菜单选择 “Options for File “main.c”…”
      在这里插入图片描述
    • 选择"Always Build",使其处于选中状态,勾的颜色变为黑色,而不是未勾选或灰色勾选。然后点击“OK”按钮。
      在这里插入图片描述
    • 再次编译发现即使不修改任何代码,main.c仍会被重新编译,达到了我们的目的。

    使用其它开发环境的同学不妨探索一下如何设置达到同样的目的,我认为这是很实用的一个小技巧。

  • 您还可以看一下 韦语洋(Lccee)老师的一机一码加密、被破解自动销毁随时授权回收升级系列视频课程课程中的 演示如何破解一个软件绕过注册机(仅作为后续课程的了解)小节, 巩固相关知识点