STM32 Keil5 attribute 关键字的用法

  这篇文章记录一下STM32中attribute的用法。之前做项目的时候产品需要支持远程升级,要求版本只能向上迭代,不支持回退。当时想到的方案是把版本号放到bin文件的头部,设备端收到bin文件的首包部数据后判断是否满足升级要求,这里就可以用attribute关键字把版本号放进bin文件里。

目录

一、工程配置

  使用Stm32Cubemx配置串口调试功能即可,配置方法可以参考之前的文章:https://blog.csdn.net/m0_46295154/article/details/139575740?spm=1001.2014.3001.5502

二、代码编写

复制代码
const uint16_t Version __attribute__((at(0x08001000)))= 111;			//版本号
const uint16_t DevicID __attribute__((at(0x08001002)))= 888;			//设备ID

int fputc(int ch, FILE *f)
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
	return ch;
}

int main(void)
{
	HAL_Init();
	SystemClock_Config();
	MX_GPIO_Init();
	MX_USART1_UART_Init();
	while (1)
	{
		printf("Version:%d  DevicID:%d\r\n", Version, DevicID);
		HAL_Delay(1000);
	}
}

三、Keil配置

keil配置里加入这句话,生成bin文件到工程路径下:

复制代码
fromelf --bin -o "$L@L.bin" "#L

四、效果展示

使用16进制工具查看生成的Bin文件0X1000和0X1002地址的数据和我打印的数据是一样的(数据以小端序存储的),符合预期。

相关推荐
俊基科技4 小时前
A-59U工业级多模语音处理模块在矿山矿井通信与呼叫报警系统中的应用
嵌入式硬件·嵌入式开发·硬件开发·ai降噪·回音消除·拾音降噪
周周记笔记6 小时前
GD32F450xx MCU Datasheet 解读:硬件测试工程师的测试方法论
单片机·嵌入式硬件
潘潘的嵌入式日记7 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
AOI小白新手上路9 小时前
江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明
单片机·嵌入式硬件·51单片机
HUI-47410 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计10 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯11 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计12 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
一条破秋裤12 小时前
TIM 输入捕获与 PWMI:从边沿到频率、占空比
笔记·stm32·学习
AOI小白新手上路12 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机