stm32程序烧录完不执行不工作

本文记录了一次STM32F103VET6程序烧录后无法执行的问题排查过程。经测试发现,使用不同版本的STM32CubeMX配置会导致此现象。最终定位到代码中二维数组大小调整引起的内存溢出问题,并通过手动配置项目解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况:

使用stm32f103vet6,工程在某一次修改后(称为新版本工程),编译无错误,但是烧录后,程序不执行,
电路板有4个led灯,程序设置了初始化时直接点亮4个led灯。
但是,在这一次修改工程后,烧录完灯不亮,

测试:

多次测试,
发现使用老版本的工程仍然可以正常使用,排除硬件故障。
继续测试,
发现老版本和新版本工程的区别,在于使用了stm32cubemx不同的版本配置,老版本工程使用了stm32cubemx6.1.2版本,新版本工程使用了stm32cubemx6.3.0版本,
继续测试,即使是老版本工程,只要是用stm32cubemx6.3.0配置过,也会出现编译无错误,但是烧录后,程序不执行的现象

解决方案:

使用老版本工程,然后绕过stm32cubemx,通过手动配置项目,修改代码,直接编译烧录,发现可以正常运行。

具体原因:

不清楚,可能6.3.0版本cubemx有bug?
修改时间:2021.9.18 :21:34
被另一位同事修改了代码,某个二维数组大小被出于节省内存空间的目的,减小了。导致了内存溢出,新版本工程是我从同事那里拿来直接改的,老版本工程是我自己写的,所以出现了以上情况。

最后:

如果有人遇到这种情况,请留言告知,通过总结大家遇到的情况,也许能找到真正的原因?
修改时间:2021.9.18 :21:34
各位在联合开发的时候,引以为戒吧。。。

更新

用了一个printf(),但是printf没有重定位到串口1。
也出现了烧录不工作。

### STM32烧录失败无反应的原因分析 当遇到STM32烧录后无任何反应的情况时,可能涉及硬件连接、配置设置以及程序逻辑等多个方面的问题。以下是详细的排查方法: #### 1. 硬件连接检查 确保开发板与编程器之间的连接稳固可靠。对于正点原子的探索板STM32F4系列,在更换USART端口(如从USART1改为USART2)之后仍无法通信的情况下,应重点核查电源供应情况和焊接质量。 由于已经确认过电源是问题所在[^2],那么接下来要仔细查看所有涉及到的新串口管脚是否都已正确连线至外部设备,并且这些信号线之间存在短路现象;另外也要留意是否有遗漏接地处理的地方。 #### 2. 配置参数验证 进入IDE中的项目属性页面,核对所选MCU型号及其启动模式是否匹配实际使用的单片机芯片。特别是如果改变了默认初始化外设,则需同步调整相应的初始化代码片段来适应新的资源分配方式。 例如,在切换USART实例的同时,记得修改对应的中断向量表位置、GPIO映射关系以及其他依赖于特定UART通道的功能选项。这部分操作通常可以在`stm32f4xx_hal_conf.h`文件内成定义。 ```c #define USARTx USART2 #define USARTx_CLK_ENABLE() __HAL_RCC_USART2_CLK_ENABLE() #define USARTx_TX_GPIO_PORT GPIOA #define USARTx_RX_GPIO_PORT GPIOA #define USARTx_TX_PIN GPIO_PIN_2 #define USARTx_RX_PIN GPIO_PIN_3 #define USARTx_AF GPIO_AF7_USART2 ``` #### 3. 初始化过程审查 深入研究官方提供的“实验四 串口通信”的源码实现细节,对比自己编写的版本是否存在差异之处。尤其是关于波特率设定、数据位长度、停止位数目等关键参数的选择上要做到全一致。 此外,还需关注NVIC优先级分组安排是否会干扰到当前任务调度机制的有效运行。适当降低其他高优先级ISR的发生频率有助于提高低层驱动响应速度从而保障整体系统的稳定性。 ```c /* Configure the NVIC Preemption Priority Bits */ __HAL_RCC_SYSCFG_CONFIG(SYSCFG_PREEMPTION_PRIORITY_GROUP); /* Enable and set UART Interrupt to a lower priority level than systick interrupt */ HAL_NVIC_SetPriority(USARTx_IRQn, 5, 0); HAL_NVIC_EnableIRQ(USARTx_IRQn); ``` #### 4. 调试工具辅助诊断 利用JTAG/SWD调试接口配合专业的在线仿真软件来进行实时跟踪监测。通过观察变量变化趋势图谱能够快速定位潜在错误源头并加以修正善。 同时也可以借助逻辑分析仪捕捉物理层面的数据流波形特征以便更直观地判断传输链路上有无障碍因素影响着最终结果呈现形式。 ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值