在 STM32F4 系列中,SDIO 的时钟源可以通过 RCC_GetClocksFreq 函数获取。这个函数可以返回系统时钟、AHB 时钟、APB1 时钟、APB2 时钟等的频率。SDIO 的时钟通常来源于 PLL48CLK,因此你需要检查 RCC 配置以确定 PLL48CLK 的频率。
以下是一个示例代码,展示如何获取 SDIO 时钟频率:
#include "stm32f4xx.h"
void Get_SDIO_Clock_Freq(void) {
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
// SDIO clock is derived from PLL48CLK
uint32_t sdio_clock = RCC_Clocks.PLL48CLK_Frequency;
printf("SDIO Clock Frequency: %lu Hzn", sdio_clock);
}
解释:
- RCC_ClocksTypeDef: 这是一个结构体,用于存储各种时钟频率。
- RCC_GetClocksFreq: 这个函数填充
RCC_Clocks 结构体,其中包括 PLL48CLK_Frequency,即 PLL48CLK 的频率。
- PLL48CLK_Frequency: 这是 SDIO 时钟的频率,通常用于 SDIO 接口。
注意事项:
- 确保在调用
RCC_GetClocksFreq 之前,已经正确配置了 RCC 时钟树,特别是 PLL48CLK。
- 如果 PLL48CLK 没有正确配置或启用,
PLL48CLK_Frequency 可能为 0。
与 STM32H7 的区别:
在 STM32H7 系列中,你可以使用 HAL_RCCEx_GetPeriphCLKFreq(STM32_RCC_PERIPHCLK_SDMMC) 来直接获取 SDMMC 时钟频率。然而,STM32F4 系列没有这个函数,因此需要通过 RCC_GetClocksFreq 来间接获取 SDIO 时钟频率。
希望这对你有帮助!
在 STM32F4 系列中,SDIO 的时钟源可以通过 RCC_GetClocksFreq 函数获取。这个函数可以返回系统时钟、AHB 时钟、APB1 时钟、APB2 时钟等的频率。SDIO 的时钟通常来源于 PLL48CLK,因此你需要检查 RCC 配置以确定 PLL48CLK 的频率。
以下是一个示例代码,展示如何获取 SDIO 时钟频率:
#include "stm32f4xx.h"
void Get_SDIO_Clock_Freq(void) {
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
// SDIO clock is derived from PLL48CLK
uint32_t sdio_clock = RCC_Clocks.PLL48CLK_Frequency;
printf("SDIO Clock Frequency: %lu Hzn", sdio_clock);
}
解释:
- RCC_ClocksTypeDef: 这是一个结构体,用于存储各种时钟频率。
- RCC_GetClocksFreq: 这个函数填充
RCC_Clocks 结构体,其中包括 PLL48CLK_Frequency,即 PLL48CLK 的频率。
- PLL48CLK_Frequency: 这是 SDIO 时钟的频率,通常用于 SDIO 接口。
注意事项:
- 确保在调用
RCC_GetClocksFreq 之前,已经正确配置了 RCC 时钟树,特别是 PLL48CLK。
- 如果 PLL48CLK 没有正确配置或启用,
PLL48CLK_Frequency 可能为 0。
与 STM32H7 的区别:
在 STM32H7 系列中,你可以使用 HAL_RCCEx_GetPeriphCLKFreq(STM32_RCC_PERIPHCLK_SDMMC) 来直接获取 SDMMC 时钟频率。然而,STM32F4 系列没有这个函数,因此需要通过 RCC_GetClocksFreq 来间接获取 SDIO 时钟频率。
希望这对你有帮助!
举报