打印
[STM32F4]

请问一下,STM32F407可以下载,但是主频不对是什么原因?

[复制链接]
楼主: 東南博士
手机看帖
扫描二维码
随时随地手机跟帖
21
药无尘| | 2024-8-6 11:49 | 只看该作者 回帖奖励 |倒序浏览
时钟没设置好呗,

使用特权

评论回复
22
药无尘| | 2024-8-6 11:49 | 只看该作者
一般默认是8M晶振,但是你的晶振可能不是8M

使用特权

评论回复
23
phoenixwhite| | 2024-8-6 13:40 | 只看该作者
检查MCU及其外围电路是否存在焊接问题、短路或断路等情况。

使用特权

评论回复
24
sesefadou| | 2024-8-6 18:33 | 只看该作者
如果外部高速时钟(HSE)没有被正确使能或配置不当,也会导致系统时钟频率不正确。

使用特权

评论回复
25
wangdezhi| | 2024-8-6 20:13 | 只看该作者
使用的晶振频率与代码中配置的晶振频率一致。例如,如果硬件使用的是8 MHz晶振,但代码中配置的是16 MHz,那么主频就会不正确。

使用特权

评论回复
26
vivilyly| | 2024-8-6 22:26 | 只看该作者
如果使用外部晶振,请检查晶振是否正常工作。

使用特权

评论回复
27
qiufengsd| | 2024-8-8 10:09 | 只看该作者
在固件库或HAL库中,时钟配置通常由专门的初始化函数来完成。如果这些函数的参数设置不正确,也可能导致主频设置错误。

使用特权

评论回复
28
deliahouse887| | 2024-8-8 12:32 | 只看该作者
系统复位后,时钟设置可能未正确切换到期望的时钟源。检查相关的时钟初始化代码,确保在复位后将 HCLK 时钟切换到 HSE 倍频后的 PLLCLK 时钟。

使用特权

评论回复
29
mnynt121| | 2024-8-8 14:31 | 只看该作者
检查代码中关于系统时钟(SYSCLK)、HSI、HSE、PLL等的配置是否正确。

使用特权

评论回复
30
robincotton| | 2024-8-8 16:16 | 只看该作者
定时器和其他外设的专用时钟源如果没有正确使能,也会导致这些外设无法在预期的频率下工作

使用特权

评论回复
31
averyleigh| | 2024-8-8 21:31 | 只看该作者
PLL(锁相环)的配置直接影响系统主频。错误的倍频(PLL_N)或分频(PLL_M, PLL_P)参数会导致实际主频与预期不符。

使用特权

评论回复
32
wilhelmina2| | 2024-8-9 00:37 | 只看该作者
STM32F407的系统时钟(SYSCLK)通常由HSE(高速外部晶振)或HSI(高速内部晶振)提供,并通过PLL(锁相环)进行倍频。

使用特权

评论回复
33
gygp| | 2024-8-9 03:48 | 只看该作者
使用STM32的标准库或HAL库函数

使用特权

评论回复
34
wangdezhi| | 2024-8-9 06:49 | 只看该作者
参考STM32F407的官方文档和示例代码

使用特权

评论回复
35
V853| | 2024-8-9 23:33 | 只看该作者
软件错误或其他配置错误

使用特权

评论回复
36
hearstnorman323| | 2024-8-10 12:38 | 只看该作者
#include "stm32f4xx_hal.h"

void SystemClock_Config(void) {
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    // 配置HSI作为时钟源
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
    RCC_OscInitStruct.PLL.PLLM = 16;
    RCC_OscInitStruct.PLL.PLLN = 336;
    RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
    RCC_OscInitStruct.PLL.PLLQ = 7;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
        Error_Handler();
    }

    // 配置系统时钟
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                                  |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
        Error_Handler();
    }
}

void main(void) {
    HAL_Init(); // 初始化 HAL 库
    SystemClock_Config(); // 配置系统时钟

    // 初始化其他外设
    // ...

    // 主循环
    while (1) {
        // 正常运行的代码
        // ...
    }
}

使用特权

评论回复
37
qiufengsd| | 2024-8-10 15:56 | 只看该作者
如果外部晶振(HSE)出现故障或未正确连接,会导致无法使用外部时钟源,从而影响系统主频。

使用特权

评论回复
38
软核硬核| | 2024-8-10 21:19 | 只看该作者
如果外部高速时钟(hse)未正确启用或配置,也会导致系统时钟频率不正确。

使用特权

评论回复
39
timfordlare| | 2024-8-10 21:30 | 只看该作者
APB1和APB2总线时钟未正确使能或配置,会影响到依赖于这些总线的外设的工作频率。

使用特权

评论回复
40
天意无罪| | 2024-8-11 17:11 | 只看该作者
程序下载和主频对不对没有直接关系,看一下晶振是否起振,或者配置是否有问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则