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

相关推荐
jghhh013 分钟前
基于DSP28335的RS485串口通信与AD采样开发方案
单片机·嵌入式硬件
say_fall23 分钟前
微处理器及其体系结构:从8088到现代多核处理器
单片机·硬件架构·硬件工程
2301_7756023834 分钟前
晶振相关知识
单片机
2zcode1 小时前
基于STM32的直流电机串级PID伺服控制系统设计与实现
stm32·单片机·嵌入式硬件·直流电机
都在酒里1 小时前
STM32低功耗休眠详解——睡眠、停止与待机模式实战,综合应用(三)
stm32·单片机·嵌入式硬件
嵌入式小站1 小时前
STM32 零基础可移植教程 06:外部中断按键,不用一直在 while 里盯着它
stm32·单片机·嵌入式硬件
大卡片2 小时前
GPIO控制器原理
单片机·嵌入式硬件
余生皆假期-2 小时前
J-link Commander 命令操作 MCU 连接、调试、烧录、擦除等
单片机·嵌入式硬件
lingzhilab2 小时前
零知派ESP32——ULN2003AN驱动28BYJ-48步进电机控制系统
单片机·嵌入式硬件
╰ㄣ浮华若梦︶ _2 小时前
51单片机的SPI协议
单片机·嵌入式硬件·51单片机·8051·spi协议