查看: 4770|回复: 3

[分享] Keil工程宏定义竟支持可视化配置!

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3920

    主题

    7538

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39928
    最后登录
    2025-8-20
    发表于 2022-4-11 10:09:38 | 显示全部楼层 |阅读模式
    Keil工程宏定义竟支持可视化配置!


    之前用Keil MDK做项目的时候有个想法:是否能将宏定义做成一个可视化的模板呢?这样我就不用直接去修改对应的.h或者.c文件了,也能减少手误导致工程编译出问题。另外,当程序需要改某个参数时,也可以告诉那些看不懂程序的人帮忙配置,增加程序的维护性。很荣幸的是,Keil MDK就支持这样的方法!那么如何来实现呢?搜索官方文档里的Configuration Wizard:
    11.png
    12.png
        这个文档描述得非常详细,也提供了一个配置模板,我们只需要照着文档描述写好相应的格式即可生成一个图形化的配置界面。(注意:Keil并没有那么智能,写完这个模板它并不能立马自动匹配到,需要重新关掉Keil工程再开才能加载成图形配置模板,然后才能够实现即时修改即时响应,这点很多写文章的作者并没有告诉读者这个坑!!!),这里我用的是KeilV5.25的版本,不清楚后面的新版本是否改善了这个问题。


        接下来我们新建一个.h或者一个.c文件,然后在.h文件或者.c文件的开头加入:


    // <<< Use Configuration Wizard in Context Menu >>>
    在文件的结尾加入:


    // <<< Use Configuration Wizard in Context Menu >>>
        然后重新关掉工程,再继续打开工程,再打开这个文件就可以看到下面这样的效果:
    19.png
        接下来,我们就需要在这对配置向导的开头-结尾中添加我们的配置方法,以下是配置方法的语法规则:
    13.png
        接下来我们根据以上官方网站提供的配置模板以及参数就可以快速的修改出我们想要的配置模板,这里面提供了单选框、复选框、字符串、参数范围定义等多种功能的配置方案。这里我以小熊派为例做的一个配置模板:
    1. // <<< Use Configuration Wizard in Context Menu >>>
    2. #ifndef __BEARPI_CONFIG_H
    3. #define __BEARPI_CONFIG_H

    4. //是否支持调试使能
    5. // <c1> Debug Config
    6. // <i> Debug Config generation
    7. #define _USE_DEBUG
    8. // </c>

    9. //小熊派开发配置,选择E53传感器模组以及IoT通信模组
    10. // <h>BearPi Config
    11. //  <o>Select E53 Module
    12. //   <i> Default: E53_IA1
    13. //  <0=>E53_IA1
    14. //  <1=>E53_SC1
    15. //   <2=>E53_SC2
    16. //   <3=>E53_SF1
    17. //   <4=>E53_IS1
    18. //  <5=>E53_ST1
    19. #define BEARPI_E53_MODULE 0
    20. //  <o>Select WAN Module
    21. //   <i> Default: E53_IA1
    22. //  <0=>NB-IoT&Card-NB35-A
    23. //  <1=>WIFI-WIFI8266
    24. //   <2=>2G-G26
    25. //   <3=>HiLink-HiLink710
    26. #define BEARPI_WAN_MODULE 0
    27. // </h>

    28. //是否支持调试LED
    29. // <c1> Support Debug Led
    30. // <i> Use PC13 debug led
    31. #define _SUPPORT_DEBUG_LED
    32. // </c>

    33. //是否支持键盘
    34. // <c1> Support KeyBoard
    35. // <i> Support using keyboard
    36. #define _SUPPORT_KEYBOARD
    37. // </c>

    38. //是否支持AT24C02
    39. // <c1> Support AT24C02
    40. // <i> Support using AT24C02 to store module parameters
    41. #define _SUPPORT_AT24C02
    42. // </c>

    43. //是否支持W25Q64
    44. // <c1> Support W25Q64
    45. // <i> Support using SPIFLASH to store module parameters
    46. //#define _SUPPORT_W25Q64
    47. // </c>

    48. //是否支持SD卡
    49. // <c1> Support SDCard
    50. // <i> Support using SPIFLASH to store module parameters
    51. #define _SUPPORT_SDCARD
    52. // </c>

    53. //版本信息
    54. // <s>Version information
    55. //  <i>version
    56. #define BEARPI_CONFIG_VERSION "1.0.0"

    57. #endif //__BEARPI_CONFIG_H
    58. // <<< end of configuration section >>>
    复制代码
    最终效果如下:
    14.png
        当我们选择了对应的功能以后,宏定义就会自动的为我们修改对应的参数,例如修改版本信息:
    1. 20220326
    复制代码

    15.png
    我们可以看到.h文件里的这个宏定义已经修改了这个值:
    16.png
    Keil MDK提供的这个功能真的是单片机工程师的福音啊!!!!





    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:40
  • 签到天数: 2402 天

    连续签到: 111 天

    [LV.Master]伴坛终老

    84

    主题

    2万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    22318
    最后登录
    2025-8-20
    发表于 2022-4-11 13:47:41 | 显示全部楼层
    嗯,是很好的功能
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-7 08:45
  • 签到天数: 279 天

    连续签到: 1 天

    [LV.8]以坛为家I

    114

    主题

    1314

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    11065

    热心会员

    最后登录
    2025-8-17
    发表于 2022-4-11 18:14:49 | 显示全部楼层
    这个好早之前就开始用了,配置简单的几个参数很方便,而且注释全中文很清晰
    不过一旦参数一多,用这界面感觉就不如代码清晰了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 1868 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112694
    最后登录
    2025-8-17
    发表于 2022-4-11 22:33:56 | 显示全部楼层
    这功能不错,之前一直还不知道有这功能呢
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-21 03:49 , Processed in 0.094473 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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