这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【Mini-F5375-OB】配置时钟

共2条 1/1 1 跳转至

【Mini-F5375-OB】配置时钟

助工
2025-01-26 19:45:14     打赏

在MM32F5375的用户手册中描述:“MM32F5370 微控制器搭载了由安谋科技授权的 ARM®v8-M 架构“星辰”STAR-MC1 (兼 容 Cortex®-M33)处理器,内置 L1 ICache、DCache,同时具备高性能和低功耗的特点, 最高工作频率可达 180MHz”,下面分享一下如何修改配置,使其达到最高运行频率。

1、需要用外HSE,那么首先得找到HSE的晶振频率是多少,在开发板原理图中,我找到的他的外设时钟为12M:

image.png

2、在mm32f5370.h中定义有HSE的时钟的宏定义:

#ifdef  CUSTOM_HSE_VAL
#define HSE_VALUE                               (12000000U) /*!< Value of the External oscillator in Hz. */
#else
#define HSE_VALUE                               (8000000U) /*!< Value of the External oscillator in Hz. */
#endif

以上代码可见,需要在编译的宏定义中,定义CUSTOM_HSE_VAL这个开关。

所以,我在makefile里面添加宏定义:

# C源文件宏定义
C_DEFS += -DUSE_STDPERIPH_DRIVER -DCUSTOM_HSE_VAL

3、在官方提供的程序system_mm32f5370.c中对工程的时钟进行配置,在函数:SetSysClockToDefine中使用宏定义SYSCLK_HSE_XXMHz进行条件编译。而SYSCLK_HSE_XXMHz是定义时钟运行频率,在程序里可以自动计算出分频系数:

我修改了

#define SYSCLK_HSE_XXMHz                180000000 /* default:150MHz, can be set as 72000000 or others */

然后编译,并在配置好后,使用频率打印信息来展示当前的运行频率:

/***********************************************************************************************************************
  * @brief  Print information
  * @note   none
  * @param  none
  * @retval none
  *********************************************************************************************************************/
void PLATFORM_PrintInfo(void)
{
    RCC_ClocksTypeDef RCC_Clocks;

    printf("\r\nBOARD : EVB-F5375");
    printf("\r\nMCU : MM32F5375G8PV");

    printf("\r\n");

    switch (RCC->CFGR & RCC_CFGR_SWS_Msk)
    {
        case 0x00:
            printf("\r\nHSI used as system clock source");
            break;

        case 0x04:
            printf("\r\nHSE used as system clock source");
            break;

        case 0x08:
            if (RCC->PLL1CFGR & RCC_PLL1CFGR_PLL1SRC_Msk)
            {
                printf("\r\nPLL (clocked by HSE) used as system clock source");
            }
            else
            {
                printf("\r\nPLL (clocked by HSI) used as system clock source");
            }

            break;

        case 0x0C:
            printf("\r\nLSI used as system clock source");
            break;

        default:
            break;
    }

    RCC_GetClocksFreq(&RCC_Clocks);

    printf("\r\n");
    printf("\r\nSYSCLK Frequency : %7.3f MHz", (double)RCC_Clocks.SYSCLK_Frequency / (double)1000000.0);
    printf("\r\nHCLK   Frequency : %7.3f MHz", (double)RCC_Clocks.HCLK_Frequency   / (double)1000000.0);
    printf("\r\nPCLK1  Frequency : %7.3f MHz", (double)RCC_Clocks.PCLK1_Frequency  / (double)1000000.0);
    printf("\r\nPCLK2  Frequency : %7.3f MHz", (double)RCC_Clocks.PCLK2_Frequency  / (double)1000000.0);
    printf("\r\n");
}

【配置运行效果】

编译下载后,开启printf,可以观察到打印出来的频率与设置的一致:

image.png

【总结】

在官方提供的源码中,可以方便的修改宏定义而实现指定运行频率的设定。




关键词: Mini-F5375-OB     灵动MM32     频率设定    

专家
2025-01-27 10:37:37     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]