竹叶风轻敲 2024-12-13 18:26 采纳率: 48.9%
浏览 34
已结题

为啥程序死在这个延迟函数里了

img

img

img


通过图三,我已经配置好了HCLK,APB2时钟,让后,点亮pc13口的灯,但熄灭不了,应是该是进入delay函数,死在while里了,不知道这个函数出问题在哪

  • 写回答

2条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从您给出的代码和描述来看,程序似乎死在了delay_ms函数中的while循环里。这可能是由于以下几个原因造成的:

    1. 时钟配置问题:确保您的时钟配置是正确的,特别是AHB、APB1和APB2时钟分频器的配置。如果时钟配置不正确,可能会导致某些功能无法正常工作。请检查图5中的时钟初始化代码是否正确。
    2. SysTick配置问题:在delay_ms函数中,您使用了SysTick来进行延时。请确保SysTick的配置是正确的。特别是SysTick->CTRL|=1<<0;这一行应该启动SysTick定时器,但是您需要确认是否在正确的地方重置了SysTick的值(例如SysTick->VAL=0;)。此外,延时时间的计算也可能存在问题,您应该确保SysTick->LOAD的值正确计算。
    3. GPIO配置问题:检查GPIO的配置是否正确。包括GPIO的模式(输出、输入等)、引脚号、速度和上拉/下拉电阻的配置。图1中的GPIO配置代码看起来没有明显的错误,但请确保所有的配置都是正确的。
    4. 编译器警告:您的代码中存在一些编译器警告,如“last line of file ends without a newline”。虽然这些警告不会导致程序崩溃,但它们可能会影响代码的某些功能或导致其他问题。请解决这些警告,并确保所有的代码都正确编写和格式化。
    5. 硬件问题:如果以上软件问题都已排除,那么可能是硬件问题导致的。确保您的STM32硬件连接是正确的,并且正常工作。

    为了进一步帮助您解决问题,建议您使用调试器逐步调试程序,查看变量的值、寄存器的状态等,以确定程序在哪一步停止执行。此外,检查您的编译器设置和库文件是否正确配置也很重要。

    希望这些建议能帮助您解决问题!如果您还有其他问题或需要进一步的帮助,请告诉我。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月20日
  • 创建了问题 12月13日