STM32:HAL_RCC_OscConfig中程序卡死问题解决办法

这篇具有很好参考价值的文章主要介绍了STM32:HAL_RCC_OscConfig中程序卡死问题解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先,参考该博主的文章(感谢博主的刨根问底),了解卡死的原理:https://blog.csdn.net/qq153471503/article/details/114700884

在了解原理后,发现在IAP跳转后,APP卡死是因为不能再次对PLL进行初始化操作,所以导致了卡死现象。

经过思考,HAL库所有模块的Init,都会有对应的DeInit,所以在IAP跳转之前,对RCC进行DeInit操作,该问题解决,欢迎批评指正!

代码如下:文章来源地址https://www.toymoban.com/news/detail-696617.html

void JumpToApplication(void)
{
	/* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
	if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
	{ 
		/* Jump to user application */
		JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
		Jump_To_Application = (pFunction) JumpAddress;

		HAL_RCC_DeInit();    //对RCC进行DeInit操作,防止APP卡死
		
		/* Initialize user application's Stack Pointer */
		__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
		/* Jump to application */
		Jump_To_Application();
	}
}

到了这里,关于STM32:HAL_RCC_OscConfig中程序卡死问题解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【STM32笔记】HAL库UART串口配置及重定向(解决接收中断与scanf不能同时工作、重定向卡死、低功耗一直唤醒的问题)

    【STM32笔记】HAL库UART串口配置及重定向(解决接收中断与scanf不能同时工作、重定向卡死、低功耗一直唤醒的问题)

    【STM32】HAL库UART串口配置及重定向(解决接收中断与scanf不能同时工作、重定向卡死、低功耗一直唤醒的问题) 注意:这里用的编译器版本为ARMCC(也就是第5代编译器 而不是AC6) 首先 要使用printf和scanf 必不可少的就是 这里需要做的就是配置单片机的UART 并且使其能够被pri

    2023年04月08日
    浏览(8)
  • STM32故障处理——HAL_Delay卡死

    STM32故障处理——HAL_Delay卡死

    问题描述 笔者准备写一个按键控制LED亮灭的简单程序,但是程序却卡死在了用于消抖的HAL_Delay(20)处 问题所在 检查发现是因为HAL_Delay()需要用到SysTick定时器,而本人使用的STM32CubeMX对SysTick的初始中断优先级设为了15(最低),所以按键中断进入后调用HAL_Delay()函数发生卡死 解

    2024年02月02日
    浏览(17)
  • STM32用FreeRTOS串口中断接收卡死问题

    STM32用FreeRTOS串口中断接收卡死问题

    现在意法半导体的配套软件做得很全面了,简直可以说是保姆式的服务。从芯片选型,引脚定义,到代码模板生成,一条龙服务,很方便。但是方便也有方便的坏处,那就是有些细节的规则会造成天然的bug。 比如,在stm32cubeIDE里新建工程的时候,如果勾选了FREERTOS 那么,程序

    2024年02月15日
    浏览(12)
  • STM32硬件IIC卡死问题和DMA发送数据异常问题

    问题1描述: 一直听说STM32的硬件IIC有问题,我平时做项目一直没有遇到过,这次做项目发现硬件IIC居然会自己卡死,现象就是IIC发不出数据,用逻辑分析仪捕捉不到任何电平,必须要重启单片机才能正常,接下来说一下我的硬件环境:STM32作为主机,IIC总线上挂载这AT24C02和一

    2024年02月03日
    浏览(13)
  • 嵌入式STM32程序一些卡死的原因

    嵌入式STM32程序卡死的原因可能有以下几种: 1、死循环:程序中存在死循环,导致程序无法继续执行下去。 2、中断问题:中断处理不当,导致程序无法正常运行。 3、堆栈溢出:程序中使用的堆栈空间超出了预设的范围,导致程序无法正常运行。 4、资源竞争:多个任务或中

    2024年02月08日
    浏览(48)
  • stm32外设-RCC

    stm32外设-RCC

    本栏目笔记都是基于stm32F10x RCC是Reset and Clock Control (复位和时钟控制)的缩写,它是STM32内部的一个重要外设,负责管理各种时钟源和时钟分频,以及为各个外设提供时钟使能。RCC模块可以通过寄存器操作或者库函数来配置。 RCC是复位和时钟控制模块,它负责管理STM32内部的各

    2024年02月10日
    浏览(7)
  • STM32 硬件IIC 控制OLED I2C卡死问题

    STM32 硬件IIC 控制OLED I2C卡死问题

    #更新通知:2023-09-06 STM32L151 固件库 使用I2C 太难了,又宕机了,建议不要在固件库版本上尝试硬件IIC 了,一般人真用不了,直接使用软件模拟的,或者不要使用固件库了,用HAL 库吧,据说HAL 库没这么多问题,不死心的我还是死心了,等有空再研究吧 3.1 I2C模式,我这里选的

    2024年02月09日
    浏览(19)
  • STM32_RCC时钟控制学习笔记

    STM32_RCC时钟控制学习笔记

    开启时钟时,要打开哪个外设的时钟,就先找这个外设是在哪个总线上,开启某个总线某个外设的是时钟。 时钟总线:AHB . APB1. APB2 如下图为APB1,APB2,和AHB总线包含的外设。  APB1为APB低速总线,最大频率为系统时钟SystemClk的4分频,以STM32F407为例,最大为 42MHz。  APB2为APB高速

    2024年01月17日
    浏览(9)
  • STM32H5开发(3)----电源控制&RCC

    STM32H5开发(3)----电源控制&RCC

    VDDA = 1.62 V ~3.6 V :ADC/DAC的外部供电电源 VDDIO2 = 1.08 V ~ 3.6 V : 9 I/Os (PA8, PA9, PA15, PB3:8)的外部供电电源(仅WLCSP25封装) VDD = 1.71 V ~ 3.6 V: GPIO,内部电压调制器,系统复位模块,电源管理以及内部时钟的外部供电电源 VBAT = 1.2 V ~ 3.6 V :无VDD时通过功率切换开关给RTC/内部32kHz振荡器

    2024年02月15日
    浏览(16)
  • STM32基础知识(三)-- 系统时钟RCC详解

    STM32基础知识(三)-- 系统时钟RCC详解

    本文主要探讨STM32中比较重要的一个基础知识,RCC系统时钟,系统时钟也就是CPU的脉搏,决定CPU的速率,被誉为芯片的心跳,之后再文章中将会结合《STM32F10X-中文参考手册》进行介绍时钟树以及相关知识。 参考手册获取方式在上一篇博客中介绍 (1)RCC – 复位和时钟控制器

    2024年02月11日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包