网站建设规划书网站建设维护

龙口市鸿达畜牧机械有限公司 2026/09/09 18:01:35

一.了解

我在尝试建立HAL库的时候使用的正点原子的sys.c的工程,结果出现芯片内核锁死的问题。究其原因是因为正点原子使用的是8M的晶振,就导致程序下进去就会锁死内核

这是正点原子的晶振,这是我的板载晶振。

这是我最小系统的晶振。所以我们只能重写sys.c和sys.h文件解决问题。

二.程序

1.sys.c

#include "sys.h" #include "stm32f4xx.h" /** * @brief STM32F411 对齐CubeMX配置:25M晶振→96MHz 系统时钟 * @param None * @note 1、完全匹配CubeMX参数:PLLM=25, PLLN=192, PLLP=2 → 96MHz * 2、保留超时兜底+时钟源顺序,永不卡死/GPIO乱跳 * 3、校准延时精准到500ms,兼容HAL_Delay */ void SystemClock_Config(void) { uint32_t timeout = 0xFFFFFFF; // 1. FLASH配置(96MHz必备) FLASH->ACR = FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_3WS; // 2. 复位RCC+超时兜底 RCC->CR |= RCC_CR_HSION; while((RCC->CR & RCC_CR_HSIRDY) == 0 && --timeout); if(timeout == 0) { Error_Handler(); } RCC->CFGR = 0x00000000; RCC->CR &= ~(RCC_CR_PLLON | RCC_CR_HSEON); RCC->CIR = 0x00000000; // 3. 使能25M晶振+超时兜底 timeout = 0xFFFFFFF; RCC->CR |= RCC_CR_HSEON; while((RCC->CR & RCC_CR_HSERDY) == 0 && --timeout); if(timeout == 0) { Error_Handler(); } if(timeout > 0) { // 4. 完全对齐CubeMX的PLL参数(关键!) RCC->PLLCFGR = 0x00000000; RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; // 先开时钟源(防失效) RCC->PLLCFGR |= 25; // ? CubeMX的PLLM=25 RCC->PLLCFGR |= (192 << 6); // ? CubeMX的PLLN=192 RCC->PLLCFGR |= (0 << 16); // ? CubeMX的PLLP=2(对应位00) RCC->PLLCFGR |= (4 << 24); // PLLQ=4(CubeMX默认) // 5. 使能PLL+超时兜底 timeout = 0xFFFFFFF; RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0 && --timeout); if(timeout == 0) { Error_Handler(); } if(timeout > 0) { // 6. 总线分频(CubeMX同款:AHB=1, APB1=2, APB2=1) RCC->CFGR |= RCC_CFGR_HPRE_DIV1; RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // 7. 切PLL时钟源 RCC->CFGR |= RCC_CFGR_SW_PLL; while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); } } // 8. 校准延时:从400ms→500ms精准(只改这行!) SystemCoreClock = 96000000UL; // ? 校准值:25M晶振+CubeMX参数,完美匹配500ms SysTick->CTRL &= ~(1 << 2); // 清脏位 SysTick->CTRL |= (1 << 2); // 关8分频 HAL_SYSTICK_Config(SystemCoreClock / 1000); HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } void Error_Handler(void) { __disable_irq(); while(1) {} }

2.sys.h

#ifndef __SYS__H #define __SYS__H #include "stm32f4xx.h" // STM32F4核心头文件 #include "stm32f4xx_hal.h" // HAL库基础定义(必须,因为用到__HAL_XXX宏) // 声明【CubeMX原生无修改】的系统时钟配置函数 void SystemClock_Config(void); // 声明报错函数(原代码里的调用,必须声明) void Error_Handler(void); #endif

三.晶振不起震

我最开始把正点原子的一个低功耗删去,程序也可以运行,但是使用的是内部低速时钟16Mhz,我发现我delay(500)ms实测只有130ms,我又开始继续修复,最终搞定了完整的版本,把时钟跑起来。我还进行了测试。

生成了四路PWM波形,发现恨我吗预计的是可以的,我们最终给他修复完成。

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

成都网站建设公司龙华网站建设

你的团队是否真正理解了敏捷的精髓?是否在追求流程完美时忽略了团队协作的本质?本文将带你深入探索敏捷开发的核心理念,提供一套可落地的实战框架,帮助

2026/06/30 10:20:49

信阳网站建设网站建设广州

赫哲语鱼皮衣制作:妇女数字人缝制防水服饰 —— 基于 HeyGem 数字人视频生成系统的技术实现在东北三江平原的晨雾中,赫哲族老艺人正用骨针将鲟鱼皮一片片缝合。这种延续千年

2026/06/30 14:01:08

企业网站建设方案郑州建设网站

第一章:AI自动化新突破的背景与意义人工智能技术近年来在多个领域实现了跨越式发展,尤其在自动化流程中的应用正深刻改变着传统工作模式。从制造业的智能调度到软件开发中的代码生成

2026/06/30 10:34:50

网站建设多少钱海南网站建设

网盘直链下载助手:2025年最高效的下载解决方案【免费下载链接】Online-disk-direct-link-download-assistant可以获取网盘文件真实下载地址。基于【网

2026/06/30 10:32:50

淄博网站建设app网站建设

想要在普通PC电脑上完美运行苹果系统吗?VMware Unlocker这款开源工具正是你的理想选择!它专门处理macOS在非苹果硬件上的运行限制,让Windo

2026/06/30 14:16:09

大连网站建设南京网站建设

5分钟快速解决AutoCAD字体缺失问题的完整指南【免费下载链接】FontCenterAutoCAD自动管理字体插件项目地址: https://gitcode.com/gh_mirrors/fo/Fo

2026/06/30 11:02:23

网站建设流程网站建设与维护

简历优化服务是否存在夸大?Qwen3Guard-Gen-8B帮你辨别在AI写简历越来越普遍的今天,你有没有收到过这样的建议:“把‘参与项目’改成‘主导项目’”

2026/06/30 11:00:23

南昌网站建设海淀网站建设

夸克网盘自动化革命:彻底解放双手的智能管理方案【免费下载链接】quark-auto-save夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙项目地址: https://gi

2026/06/30 13:27:06

网站免费建设网站品牌建设

YOLOv8如何实现鱼类种类识别与计数?在现代水产养殖和海洋生态监测中,一个看似简单却长期困扰行业的问题是:如何快速、准确地知道“池塘里有多少条鱼࿱

2026/06/30 13:52:37

福州网站建设青岛网站建设公司

第一章:为什么你的异步程序跑不快?异步编程被广泛用于提升程序吞吐量和响应速度,但并非所有异步代码都能真正“跑得快”。性能瓶颈往往隐藏在看似高效的模型之下。阻塞

2026/06/30 13:04:04