当前位置: 首页 > article >正文

STM32 Keil5 attribute 关键字的用法

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

目录

  • 一、工程配置
  • 二、代码编写
  • 三、Keil配置
  • 四、效果展示

一、工程配置

  使用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地址的数据和我打印的数据是一样的(数据以小端序存储的),符合预期。
在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/410478.html

相关文章:

  • NuGet如何支持HTTP源
  • LLC与反激电路设计【学习笔记】
  • 信息收集(1)
  • Element UI 打包探索【2】
  • linux从0到1——shell编程9
  • Python和C++急性损伤空间结构
  • Java爬虫:数据采集的强大工具
  • Perl 简介
  • react函数式组件中的路由传参方式
  • 智慧环保大数据解决方案
  • 如何防止序列化破坏单例模式
  • 探索C/C++的奥秘之stack和queue
  • Python 数据分析核心库大全!
  • 《Python游戏编程入门》注-第8章5
  • go语言range的高级用法-使用range来接收通道里面的数据
  • spark 3.4.4 利用Spark ML中的交叉验证、管道流实现鸢尾花分类预测案例选取最优模型
  • 【zookeeper03】消息队列与微服务之zookeeper集群部署
  • 网络新技术新应用在网络安全领域的发展特点
  • 【GL004】Linux
  • vue3 reactive响应式实现源码
  • CTO 实际上是做什么的?
  • IP Transit國外頻寬使用最高優先權,國內直接與骨幹互連
  • archlinux 触摸板手势配置
  • crmeb 分享商品 邀请码 bug 修复 记录
  • java学习记录12
  • Ubuntu24虚拟机-gnome-boxes