STM32CUBEIDE登陆报错:this session has expired! Please try to login again by going to myST-login,应如何处理?
update STM32cubeide 到2.0.0版本,找不到pinout view了!? 哪里出错了??
STM32CubeIDE release v2.0.0更新了
cubeide的代码怎么编译到内部+外部FLASH里面去
CubeIDE2.0.0更新无法打开.ioc文件
有没有大佬更新了CubeIDE2.0.0,在软件内更新后体积大了一倍
有人用过正式版的STM32CubeIDE for Visual Studio Code了吗?
STM32CUBE调试中出现没有 “uwTickPrio() at 0x20000004” 对应的源文件
在STM32CUBEIDE中配置完以后直接编译然后再运行出现《没有 “_end() at 0x20000108” 对应的源文件》
关于加密环境下使用STM32CubeIDE for VSCode的问题
微信公众号
手机版
你这个问题本质上是 “链接器找不到
huart2这个符号的定义” ,而不是“没把文件放进路径”。 STM32CubeIDE 里,外设句柄(UART_HandleTypeDef huart2)是由 CubeMX 自动生成 的,只要你在.ioc里勾选了 USART2 ,代码就会生成在usart.c里,并声明在usart.h中。 编译器报错“no source file for huart2() at 0x20000108”通常并不是真的缺源文件,而是 链接器发现huart2这个符号根本不存在 ,于是把它当成一个“外部符号”去找,结果找不到,就给出一条让人误解的提示。一、先快速自检(30 秒搞定)
.ioc→ Pinout & Configuration → Connectivity → 确认 USART2 的 Mode 不是 Disable 。.ioc,点 “Generate Code” 。如果错误消失,问题就解决了;如果还在,继续往下看。
二、如果 USART2 已勾选仍然报错
99 % 的情况是你 手动改动了代码 ,把 CubeMX 生成的定义删掉了,或者条件编译被关掉了。
打开
usart.c(CubeMX 生成,路径在Core/Src/usart.c),搜索 c复制如果搜不到,说明定义确实被弄丢了。
打开
usart.h,确认有 c复制确认没有任何 c复制
之类的宏把定义包起来,而你的工程里又没开这个宏。
三、最干净的恢复办法
如果文件被改得乱七八糟,直接让 CubeMX 重新生成最省心:
Core/Src/usart.c和Core/Inc/usart.h删除(或者重命名备份)。.ioc,随便改一个参数(比如 USART2 的波特率改 115400 → 115200),保存,重新 Generate Code。usart.c/h,里面一定带huart2。四、总结一句话
“huart2 找不到” 不是路径问题,而是
huart2这个全局变量根本没被定义。 让 CubeMX 重新生成usart.c/h是最快、最不容易出错的做法。估计是工程没建完整,最好使用STM32CubeMx配置后创建工程,这样也省事。
不然的话,你就得自行做些确认,该定义的是否定义、该添加的是否添加、该包
含的是否包含。
我刚才使用Cubemx配置后快速创建了基于STM32F103C4的STM32CubeIDE的工程,启用了
UART2,编译无误。
[md]依据您提示的三种办法,我将之前项目删除,然后重新新建了一个项目,在ioc中配置完成后,我没有更改任何CUBEIDE生成的代码,编译时一切正常,但是运行时依旧出现《没有 “huart2() at 0x20000108” 对应的源文件》,我以按照方法1快速自检,按照方法二检查.c以及.h文件,我不知道是否还需要使用#ifdef USE_USART2以及该放在何处,十分感谢您的回答。


