使用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 = 0x55000000; // b ports pb12 pb13 pb14 and pb15 pins are selected as output GPIOB->OTYPER = 0x00000000; //OUTPUT PORTS PUSH PULL GPIOB->OSPEEDR = 0xFF000000; //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、网页等带格式的文本复制粘贴时附带的,编译器无法识别非标准的十六进制字符,因此触发错误。
解决方法
- 手动重新输入报错行的十六进制值:将
0x55000000改为0x55000000,0xFF000000改为0xFF000000,确保0x之后仅包含0-9、A-F(或小写a-f)的合法十六进制字符。 - 若存在大量类似问题,可把代码复制到纯文本编辑器(如Notepad++),开启「显示所有字符」功能,定位并删除隐藏的特殊字符后,再复制回Atollic工程中。
内容的提问来源于stack exchange,提问作者Onur Yağcı
相关产品推荐
相关产品推荐

