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地址的数据和我打印的数据是一样的(数据以小端序存储的),符合预期。

相关推荐
不悔哥1 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20161 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子1 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡1 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5551 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡1 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9661 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛1 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅1 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员1 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程