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 "[email protected]" "#L

四、效果展示

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

相关推荐
FreakStudio3 分钟前
【电子DIY神器】通吃各种5线步进电机!I2C接口控制28BYJ-48五线四相步进电机
stm32·单片机·mcu·嵌入式·arm·技术栈·电子diy
学渣676562 小时前
【GPIO8个函数解释】
stm32·单片机·嵌入式硬件
weixin_446504223 小时前
通信协议详解(十):PSI5 —— 汽车安全传感器的“抗干扰狙击手”
嵌入式硬件·fpga
mcupro4 小时前
TQTT_KU5P开发板教程---文件的烧写与程序固化
嵌入式硬件·fpga开发
zd8451015005 小时前
proteus OLED12864仿真
单片机·嵌入式硬件·proteus
qq_2151383276 小时前
【Proteus仿真】【32单片机-A007】PT100热敏温度检测系统设计
单片机·嵌入式硬件
LaoZhangGong1237 小时前
语法: lcd_load( buffer_pointer, offset, length);
经验分享·单片机·嵌入式硬件·pic单片机
Leiditech__9 小时前
汽车氛围灯400V浪涌防护方案之SD3002P4-3的应用实践
嵌入式硬件·汽车·硬件工程·emc·mosfet
不不不丶9 小时前
STM32——RTC实时时钟
stm32·嵌入式硬件·实时音视频
森焱森10 小时前
单片机FreeRTOSTickless低功耗模式应用示例
c语言·网络·单片机·算法·架构