Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >给小熊派做一个可视化的Keil工程配置模板(这个功能真香!)

给小熊派做一个可视化的Keil工程配置模板(这个功能真香!)

作者头像
杨源鑫
发布于 2022-04-19 04:02:32
发布于 2022-04-19 04:02:32
78900
代码可运行
举报
文章被收录于专栏:嵌入式开发圈嵌入式开发圈
运行总次数:0
代码可运行

作者 | Bruce.yang

整理 | 嵌入式应用研究院

之前用Keil MDK做项目的时候有个想法:是否能将宏定义做成一个可视化的模板呢?这样我就不用直接去修改对应的.h或者.c文件了,也能减少手误导致工程编译出问题。另外,当程序需要改某个参数时,也可以告诉那些看不懂程序的人帮忙配置,增加程序的维护性。很荣幸的是,Keil MDK就支持这样的方法!那么如何来实现呢?搜索官方文档里的Configuration Wizard

这个文档描述得非常详细,也提供了一个配置模板,我们只需要照着文档描述写好相应的格式即可生成一个图形化的配置界面。(注意:Keil并没有那么智能,写完这个模板它并不能立马自动匹配到,需要重新关掉Keil工程再开才能加载成图形配置模板,然后才能够实现即时修改即时响应,这点很多写文章的作者并没有告诉读者这个坑!!!),这里我用的是KeilV5.25的版本,不清楚后面的新版本是否改善了这个问题。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// <<< Use Configuration Wizard in Context Menu >>>

在文件的结尾加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// <<< Use Configuration Wizard in Context Menu >>>

然后重新关掉工程,再继续打开工程,再打开这个文件就可以看到下面这样的效果:

接下来,我们就需要在这对配置向导的开头-结尾中添加我们的配置方法,以下是配置方法的语法规则:

接下来我们根据以上官方网站提供的配置模板以及参数就可以快速的修改出我们想要的配置模板,这里面提供了单选框、复选框、字符串、参数范围定义等多种功能的配置方案。这里我以小熊派为例做的一个配置模板:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// <<< Use Configuration Wizard in Context Menu >>>
#ifndef __BEARPI_CONFIG_H
#define __BEARPI_CONFIG_H

//是否支持调试使能
// <c1> Debug Config
// <i> Debug Config generation
#define _USE_DEBUG
// </c>

//小熊派开发配置,选择E53传感器模组以及IoT通信模组
// <h>BearPi Config
//  <o>Select E53 Module
//   <i> Default: E53_IA1
//  <0=>E53_IA1
//  <1=>E53_SC1
//   <2=>E53_SC2
//   <3=>E53_SF1
//   <4=>E53_IS1
//  <5=>E53_ST1
#define BEARPI_E53_MODULE 0
//  <o>Select WAN Module
//   <i> Default: E53_IA1
//  <0=>NB-IoT&Card-NB35-A
//  <1=>WIFI-WIFI8266
//   <2=>2G-G26
//   <3=>HiLink-HiLink710
#define BEARPI_WAN_MODULE 0
// </h>

//是否支持调试LED
// <c1> Support Debug Led
// <i> Use PC13 debug led
#define _SUPPORT_DEBUG_LED
// </c>

//是否支持键盘
// <c1> Support KeyBoard
// <i> Support using keyboard
#define _SUPPORT_KEYBOARD
// </c>

//是否支持AT24C02
// <c1> Support AT24C02
// <i> Support using AT24C02 to store module parameters
#define _SUPPORT_AT24C02
// </c>

//是否支持W25Q64
// <c1> Support W25Q64
// <i> Support using SPIFLASH to store module parameters
//#define _SUPPORT_W25Q64
// </c>

//是否支持SD卡
// <c1> Support SDCard
// <i> Support using SPIFLASH to store module parameters
#define _SUPPORT_SDCARD
// </c>

//版本信息
// <s>Version information
//  <i>version 
#define BEARPI_CONFIG_VERSION "1.0.0"

#endif //__BEARPI_CONFIG_H
// <<< end of configuration section >>>

最终效果如下:

当我们选择了对应的功能以后,宏定义就会自动的为我们修改对应的参数,例如修改版本信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
20220326

我们可以看到.h文件里的这个宏定义已经修改了这个值:

Keil MDK提供的这个功能真的是单片机工程师的福音啊!!!!

参考资料

[1]https://www.keil.com/support/man/docs/uv4cl/uv4cl_ut_configwizard.htm

[2]https://blog.csdn.net/qq_15647227/article/details/89297207

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式应用研究院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
移植一个实时OS很难?那就手把手教你如何快速移植一个RT-Thread Nano吧!
最近在学习RT-Thread的使用,同时也相当于在拿它评估做产品的软件开发周期,最终学习的目的也就是希望能在未来的项目上用起来,STM32CubeMX其实已经支持了RT-Thread Nano的配置了,但我还是希望手动移植一下,没想到移植RT-Thread Nano如此简单,必须分享出来,哈哈哈!
杨源鑫
2020/06/01
3.2K0
STM32Cube-13 | 使用硬件I2C读写EEPROM(AT24C02)
AT24C02的原理图如下(该原理图中有bug,A0的上拉电阻无效,实际A0为低电平):
Mculover666
2020/07/16
1.7K0
STM32Cube-13 | 使用硬件I2C读写EEPROM(AT24C02)
基于RT-Thread Studio 和小熊派 实现智慧农业
摘要:如何从零开发一个“智慧农业”案例?小伙伴们有福了,孙教授手把手的带大家基于小熊派+RT-Thread开发一个智慧农业案例。
杨源鑫
2021/07/07
1.6K0
基于RT-Thread Studio 和小熊派 实现智慧农业
MCU串口命令解析器的实现
所以最近会比较忙一些,也就不会更新太频啦,但是我还是会用心分享我的所见所闻及所经历的东西,希望各位谅解!
杨源鑫
2020/05/21
2.6K0
天啊!鹅厂都开始做开发板了?网红腾讯物联网开发板终极开箱评测,让我们一睹为快!
前几天拿到了腾讯汪总赠送的EVB_MX+以及EVB_LX开发板,它们长下面这个样子,看起来很轻便,即使是外出我也可以随身带着它随时随地进行玩耍,就和小熊派一样,整体给人感觉就非常舒服。
杨源鑫
2020/09/14
1.4K0
STM32Cube-22(补充) | 使用硬件I2C驱动OLED(SSD1306)
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设驱动0.96'OLED屏幕。
Mculover666
2020/07/16
4K0
STM32Cube-22(补充) | 使用硬件I2C驱动OLED(SSD1306)
教你动手写TCP上位机与小熊派通信
背景 关于上位机的文章,作者在之前就分享过好几个上位机的开发流程分享。如下表: 序号内容语言1《如何定制自己的HID调试助手》C#2《C# 串口上位机开发》C#3《Qt 串口上位机开发》QT4《教你动手写UDP协议栈 - OTA上位机》python5《基于RT-THREAD nano的平衡车--上位机软件》QT6《R-Plan上位机》QT 上位机开发不限于语言,找我之前开发中,初衷就是那种方便就使用那种语言开发,如:C#, QT, python, VB等。 本篇文章分享是采用QT开发的TCP上位机,功能:通
Rice加饭
2022/05/10
8790
教你动手写TCP上位机与小熊派通信
STM32通用Bootloader——FOTA
固件升级,通常称为 OTA(Over the Air)升级或者 FOTA(Firmware Over-The-Air)升级,即固件通过空中下载进行升级的技术。
AIoT-KK
2020/07/13
6.9K0
STM32通用Bootloader——FOTA
移植FreeRTOS到小熊派开发板(STM32L431RCT6)
FreeRTOS源码分为两种,一种是FreeRTOS包,另一种是FreeRTOS LTS Release包。
Mculover666
2021/04/16
1.8K0
移植FreeRTOS到小熊派开发板(STM32L431RCT6)
基于小熊派光强传感器BH1750状态机驱动项目再度升级(带上位机曲线显示)
在工作中,我们常常需要对一些传感器的某些数值进行长时间的测试和观察,以了解传感器的性能,在电子工程里,我们经常听到的测试曲线莫过于电池充放电曲线了,通过电池充放电曲线,我们很容易可以知道电池在实际使用过程中满电和馈电的状态以及电池的使用周期等等,今晚,我们就让光强通过曲线显示出来,用QT+QCustomPlot来实现,最终效果如下视频操作所示:
杨源鑫
2020/05/21
7880
基于小熊派光强传感器BH1750状态机驱动项目升级(带LCD屏显示)
今天我们再小小的进阶一步,把它和小熊派上的OLED结合起来吧!所谓所见即所得,这才是开发最大的乐趣,在实现这个小项目之前,我们先来了解下小熊派开发板上的这个屏吧,先看下原理图是怎么接的:
杨源鑫
2020/05/21
1.3K0
手把手教你在FPGA上搭建一个ARM Cortex-M3软核
上一篇文章介绍了ARM DesignStart计划,其中提到了Cortex-M1/M3 DesignStart FPGA版本,支持Xilinx和国产Gowin平台,本篇文章将手把手教你如何基于ARM DesignStart计划,在FPGA上搭建一个Cortex-M3软核处理器,以Xilinx Artix-7™系列FPGA为例,介绍如何定制一颗ARM Cortex-M3 SoC软核,并添加GPIO和UART外设,使用Keil MDK环境开发应用程序,Jlink下载、调试ARM程序,最终的实现效果是LED闪烁,串口输出Hello World信息。
单片机点灯小能手
2022/04/06
4.3K0
手把手教你在FPGA上搭建一个ARM Cortex-M3软核
【安富莱】【RL-TCPnet网络教程】第8章 RL-TCPnet网络协议栈移植(RTX)
本章教程为大家讲解RL-TCPnet网络协议栈的RTX操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件、配置文件和驱动文件即可。
Simon223
2018/09/04
1.4K0
【安富莱】【RL-TCPnet网络教程】第8章  RL-TCPnet网络协议栈移植(RTX)
使用stm32cubeMX生成模板,配置stm32f103c8t6键鼠一体化
*Descriptor of Joystick Mouse interface 中端点数量改为0x02,接口协议改为0x01
用户8645060
2021/05/21
1.3K0
基于小熊派光强传感器BH1750实践(multi_timer+状态机工程应用)
实践光强传感器的开发,我们需要带上一个扩展模块:E53_SC1,如下图所示,最终连接的效果:
杨源鑫
2020/05/21
1.5K0
【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)
本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件、配置文件和驱动文件即可。另外,RL-TCPnet移植到FreeRTOS要重新配置RL-TCPnet的接口函数,以此来支持RL-TCPnet多任务运行。使用RTX无需重新配置,因为默认情况下就是采用RTX的API函数配置的。
Simon223
2018/09/04
1.8K0
【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)
i.MXRT1062 | 使用 IOMUXC 和 GPIO 点亮LED
在上手i.MX RT1062这款芯片的开发时,思考了很多问题,单独分享一篇文章好像有点夸张,所以暂且用一个小节来记录个人的一些思考。
Mculover666
2021/12/28
1.2K0
i.MXRT1062 | 使用 IOMUXC 和 GPIO 点亮LED
OpenHarmony实战开发——宿舍全屋智能开发指南
基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)、数字管家开发宿舍全屋智能,实现碰一碰开门、碰一碰开灯、碰一碰开风扇以及烟感检测。因为各项目开发流程大体相似,本文主要以碰一碰开门为例介绍如何在现有OpenHarmony开源代码的基础上实现我们想要的功能。
小帅聊鸿蒙
2025/04/17
1170
OpenHarmony实战开发——宿舍全屋智能开发指南
【STM32H7】第4章 ThreadX操作系统移植(MDK AC5)
论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514 第4章 ThreadX操作系统移植(MDK AC5) 本章
Simon223
2021/03/05
6500
【STM32H7】第4章   ThreadX操作系统移植(MDK AC5)
Marlin2.0.9 Configuration_adv.h详解
//=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== // @section temperature
全栈程序员站长
2022/09/14
2.8K0
推荐阅读
相关推荐
移植一个实时OS很难?那就手把手教你如何快速移植一个RT-Thread Nano吧!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验