打印
[MM32硬件]

灵动微MM32F013x芯片学习-内部RC时钟倍频

[复制链接]
270|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hehhehee|  楼主 | 2023-8-31 07:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MM32F013x内部集成了48Mhz的RC时钟,同时也有PLL,所以,这里采用PLL倍频内部RC时钟的方式,产生72MHZ的系统时钟。

上代码:

void clk_init(void)
{
    u8 temp=0;

    RCC->CR |= RCC_CR_HSION;

    while(!(RCC->CR & RCC_CR_HSIRDY));

    // HSI/4 is the input clock for pll
    RCC->CFGR &= ~RCC_CFGR_PLLSRC;

    //set pll mul
    RCC->CR &= ~RCC_CR_PLLDIV;// PLLDIV=0,M=1
    RCC->CR &= ~(0x1f << 26);//PLLMUL=5,N=6
    RCC->CR |= (6 - 1) << 26;

    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;//AHB factor
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;//APB1 factor
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;//APB2 factor   

    FLASH->ACR = FLASH_ACR_LATENCY_2 | FLASH_ACR_PRFTBE;//important

    //enable pll
    RCC->CR |= RCC_CR_PLLON;

    while(!(RCC->CR & RCC_CR_PLLRDY));

    // select pll as system clock
    RCC->CFGR &= ~RCC_CFGR_SW;
    RCC->CFGR |= RCC_CFGR_SW_PLL;

    //wait unitl system clock is switched to pll
    while(temp != 0x02)
    {
        temp = RCC->CFGR >> 2;
        temp &= 0x03;
    }

}

使用特权

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

本版积分规则

67

主题

809

帖子

0

粉丝