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