在MCU开发过程中,有时候需要软件的迭代,比如从V1.9升级到V1.10,或者从V23.09.23升级到V23.09.24,我们常常通过手动改动字符串或者数组来实现这个功能,从现在开始,我们会使用Keil的内置宏__DATE__和__TIME__,通过这2个宏,每次程序编译完成,烧录到MCU之后,MCU都能够准确打印出该固件的编译时间。
printf('(版本/编译时间: %s,%s)rn', __DATE__,__TIME__);
上图中编译时间是18:21:14,但是串口打印的时间却是18:21:23。但是我们发现电脑的时间何编译的时间还是有一点点区别的,原因是,编译之后,代码还要下载,还要运行,这个也是需要时间的,所以产生了误差。但如果你发现打印的时间不准确,是较早前的时间,比如很明显相差1分钟以上,或者你认为这个时间不是真正编译的时间,那么需要注意:按照Keil的编译逻辑,默认是不编译未修改过的源文件,只链接。说详细一点点就是:例如这两条打印语句的位置,是在int main(void)函数中,且main函数在main.c文件中,假如本次修改代码,未修改main.c文件,那么Keil是不会重新编译main.c文件的,也就不会将编译时的__DATE__和__TIME__编译进去。也可以通过以下设置,使得main.c文件,无论是否修改,每次编译时都会重新编译它:
当然每次都编译main.c,并非是最好的代码风格,可以把版本号打印提炼成一个函数,并单独使用一个.c文件进行实现,并将这个.c文件按照以上方法设置。
关键字:STM32 管理方法
引用地址:
企业级操作之STM32项目版本管理方法
推荐阅读最新更新时间:2024-11-08 21:24
11、STM32的ADC的原理与使用(内附代码)
一、ADC的原理及定义 Analog-to-Digital Converter的缩写。中文译名:模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。其实就是一个取样、量化、编码的一个过程。 典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。比如电量、光照传感器等常用。 二、模拟信号 模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,如目前广播的声音信号,或图像信号等。 三、数字信号 数字信号指幅度的取值是离散的,幅值表示被限制在有限个数值之内。 二进制码就是一种数字信号。二进制码受噪声的影响小,易于有数字电路进行处理,所以得到了广泛
[单片机]
STM32CubeMX新建工程+基本IO配置过程
Ⅰ、写在前面 学习本文之前可以查看我前面的文章: STM32CubeMX介绍、下载与安装 STM32CubeMX使用方法及功能介绍 本文接着上一篇文章结合基本IO配置实例,讲述关于STM32CubeMX新建工程的过程。最终通过STM32CubeMX工具配置完成一个驱动IO(点亮LED)的软件工程,也就是通过STM32CubeMX配置完成之后,打开工程直接下载就能点亮LED的工程。 本文使用Keil(MDK-ARM) V5软件为编译环境,如果你没有安装最新版本的软件,请安装最新版本的软件,具体过程可以参考我的一篇文章: MDK-ARM下载与安装 关于本文的更多详情请往下看。 Ⅱ、STM32CubeMX新建工程
[单片机]
JFlash ARM对stm32程序的读取和烧录
本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了! 在我们装了JLINK驱动后再根目录下找到JFlash ARM ,运行。 读取Flash程序: 第一步:Option-- Project Settings-- CPU下选择 Device 在下拉菜单中找到自己的芯片型号后点击确定。 第二步:Targect-- Connect链接JLINK ;Targect-- Read back-- Entrie chip读取整个Flash区域, 接下来就等待读取完成了。 第三部:File-- Save file as 选择要储存的文件类型如:HE
[单片机]
在RAM中调试STM32程序的配置方法
早就听说可以在RAM中调试STM32程序了,直到昨天晚上看了个视频,自己也想来试试。乘热打铁,今天上午跑到实验室,从网上下载资料,凭着零星的记忆开始配置。不过任何事情都不是一次成功的,这次也不意外。But经过反反复复修改,查资料,修改,查资料。还是成功啦!下面就把我配置的一些经验,结合网上已经有的一些资料傻瓜式总结出来,希望所有像我这样的初学者能够少走弯路。。。。。。 先说说在RAM中调试STM32程序的好处吧! 1. 可以单步调试程序,并且不用像仿真调试那样需要去查看繁琐的寄存器位,直接可以通过实验现象来Debug。 2. 避免擦写Flash次数限制,虽然Flash的烧写次数高达1000次以上,但是也经不起小白程序员
[单片机]
STM32 中 SysTick时钟的配置
SysTick_Config(SystemFrequency / 10) 函数的形参就是systick重装定时器的值。 systck计数频率为每秒72000000次,所以7200000次就是1/10秒,也就是100ms。 SysTick是1个24bit递减计数器,通过对SysTick控制与状态寄存器的设置,可选择HCLK时钟(72M)或HCLK的8分频(9M,缺省是这个)作为SysTick的时钟源。 SysTick的重装寄存器决定了定时器频率。 若SysTick的时钟源是72M, SystemFrequency = 72000000Hz 所以 SysTick_Config(SystemFrequency / 10
[单片机]
stm32专题二十四:ADC独立模式单通道采集
ADC独立单通道采集 使用的是野火stm32f103vet6指南者开发板,硬件连接图如下: 实验一:独立单通道中断读取ADC值 编程要点: 初始化ADC用到的GPIO; 初始化ADC初始化结构体; 配置ADC时钟,配置通道的转换顺序和采样时间; 使能ADC转换完成中断,配置中断优先级; 使能ADC,准备开始转换; 校准ADC; 软件触发ADC,真正开始转换; 编写中断服务函数,读取ADC转换数据; 编写main函数,把转换的数据打印出来; 代码如下: bsp_adc.c #include bsp_adc.h static void ADCx_GPIO_Config(void) { GPIO_Ini
[单片机]
stm32之nRF24L01无线模块(2):无线模块的地址
可能刚开始接触nRF24L01的童鞋都会注意到例程函数中有两个定义的地址 const u8 TX_ADDRESS ={0x34,0x43,0x10,0x10,0x01}; //发送地址 const u8 RX_ADDRESS ={0x34,0x43,0x10,0x10,0x01}; 这个非常让人疑惑,为什么地址还是数组,而且网上一搜,几乎所有的例程地址都是这一个,为什么呢,换一个不行吗?下面我们从数据手册和实验两个方面来分析,这里注意下,由于Enhanced ShockBurst 模式采用了自动应答的模式,从而简化了硬件方面程序的编写,几乎所有的例程均是基于这个模式,因此之后的nRF24L01也基于这种模式分析。 首
[单片机]
意法半导体STM32C0系列高能效微控制器性能大幅提升
新微控制器 STM32C071扩大闪存和 RAM容量,增加USB控制器,支持 TouchGFX图形软件,让终端产品变得更纤薄、小巧,更具竞争力 2024 年 10 月 16 日,中国——现在, STM32 开发人员可以在 STM32C0微控制器(MCU)上获得更多存储空间和更多功能,在资源有限和成本敏感的嵌入式应用中实现更先进的功能。 STM32C071 MCU配备高达128KB的闪存和 24KB 的 RAM ,还新增不需要外部晶振的USB从设备,支持TouchGFX图形软件。片上 USB控制器让设计人员轻松节省至少一个外部时钟和四个去耦电容,降低物料清单成本,简化 PCB元器件布局。此外,新产品只有一对电源线,这有助
[单片机]