You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Atollic开发STM32时,0x格式十六进制数无法识别的解决方法

解决Atollic中STM32代码十六进制数编译错误问题

在使用Atollic进行STM32编程时,编译器无法识别代码中部分0xXXXXXXXX格式的十六进制数,相关代码如下:

#include "stm32f4xx.h"
void gpioab_config(void) {
    RCC->AHB1ENR=0x00000000; //ahb1 channel reset
    RCC->AHB1ENR=0x00000003; //AHB1 ENABLED FOR PORT A AND PORT B
    GPIOA->MODER =0x0C000000; //A PORT INPUT
    GPIOA->OTYPER= 0x00000000; //input port push pull
    GPIOA->OSPEEDR=0x0000003C; //pa1 and pa2 speed set to very high
    GPIOA->PUPDR=0x00000028; // pa1 and pa2 has been set to pull down

    GPIOB->MODER = 0x‭55000000‬; // b ports pb12 pb13 pb14 and pb15 pins are selected as output
    GPIOB->OTYPER = 0x00000000; //OUTPUT PORTS PUSH PULL
    GPIOB->OSPEEDR = 0x‭FF000000‬; //pb12 pb13 pb14 and pb15 speed set to very high
    GPIOB->PUPDR = 0x00000000; //pb12 pb13 pb14 and pb15 are no pull-Up_down

}

int main(void)
{
  while (1)
  {
  }
}

问题原因

报错的核心是GPIOB->MODER和GPIOB->OSPEEDR这两行的十六进制数值中,0x后面混入了不可见的特殊控制字符——这类字符通常是从Word、网页等带格式的文本复制粘贴时附带的,编译器无法识别非标准的十六进制字符,因此触发错误。

解决方法

  • 手动重新输入报错行的十六进制值:将0x‭55000000‬改为0x55000000,0x‭FF000000‬改为0xFF000000,确保0x之后仅包含0-9、A-F(或小写a-f)的合法十六进制字符。
  • 若存在大量类似问题,可把代码复制到纯文本编辑器(如Notepad++),开启「显示所有字符」功能,定位并删除隐藏的特殊字符后,再复制回Atollic工程中。

内容的提问来源于stack exchange,提问作者Onur Yağcı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:46:16