OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8891|回复: 4

STM32F103想用内部时钟HSI做为系统时钟,怎么配置成36M

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-1-12
在线时间
1 小时
发表于 2016-1-12 15:10:03 | 显示全部楼层 |阅读模式
1金钱
STM32F103想用内部时钟HSI做为系统时钟,怎么配置成36M?
下面是这段程序配置不成功,不知道有没有人用过,自己配置的有问题,不成功,但找不出问题,希望哪位大哥指点一两,谢谢!       
       注:PLL=9
       unsigned char temp=0;   
        RCC->CR |= 0x00000001;                 //内部HSI时钟使能HSION
        while(!(RCC->CR>>1));                  //等待内部HSI 8M时钟就绪
        RCC->CFGR = 0X00000490;                //APB1=DIV2;APB2=DIV1;AHB=DIV4;
        PLL-=2;                                //抵消2个单位
        RCC->CFGR |= PLL<<18;                  //设置PLL值 2~16
        RCC->CFGR &= 0<<16;                           //HSI时钟2分频后做为PLL输入时钟
        FLASH->ACR|=0x32;                           //FLASH 2个延时周期

        RCC->CR |= 0x01000000;                 //PLLON
        while(!(RCC->CR>>25));                 //等待PLL锁定
        RCC->CFGR |= 0x00000002;               //PLL作为系统时钟         
        while(temp!=0x02)                      //等待PLL作为系统时钟设置成功
        {   
                temp=RCC->CFGR>>2;
                temp&=0x03;
        }

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-1-12
在线时间
1 小时
 楼主| 发表于 2016-1-12 15:10:04 | 显示全部楼层
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-4-10
在线时间
2 小时
发表于 2016-1-12 17:11:49 | 显示全部楼层
请问是什么问题呢?
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-1-12
在线时间
1 小时
 楼主| 发表于 2016-1-13 09:54:46 | 显示全部楼层
李书 发表于 2016-1-12 17:11
请问是什么问题呢?

void Stm32_Clock_Init(u8 PLL)
{
        unsigned char temp=0;   
        MYRCC_DeInit();                                   //复位并配置向量表
        RCC->CR |= 0x00000001;                 //内部HSI时钟使能HSION
        while(!(RCC->CR>>1));                  //等待内部HSI 8M时钟就绪
        RCC->CFGR = 0X00000000;                //APB1=DIV1;APB2=DIV1;AHB=DIV1;
        PLL-=2;                                //抵消2个单位
        RCC->CFGR |= PLL<<18;                  //设置PLL值 2~16
        RCC->CFGR &= 0xfffeffff;                   //HSI时钟2分频后做为PLL输入时钟
       
        FLASH->ACR |= 0x32;                           //FLASH 2个延时周期

        RCC->CR |= 0x01000000;                 //PLLON
        while(!(RCC->CR>>25));                 //等待PLL锁定
        RCC->CFGR |= 0x00000002;               //PLL作为系统时钟         
        while(temp!=0x02)                      //等待PLL作为系统时钟设置成功
        {   
                temp=RCC->CFGR>>2;
                temp&=0x03;
        }   
}
不过还是有问题,查不出,配置是的36MHZ,可定时器配置后,中断时间不对,还是有问题,正在查
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-1-12
在线时间
1 小时
 楼主| 发表于 2016-1-13 11:59:16 | 显示全部楼层
把配置PLL的时钟和设置PLL的倍频调换一下顺序就可以了,暂时目前测试没有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-14 18:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表