OpenEdv-开源电子网

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

寄存器版8M内部晶振,时钟初始化不通过

[复制链接]

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2013-12-6
在线时间
5 小时
发表于 2015-10-19 16:19:02 | 显示全部楼层 |阅读模式
5金钱
//系统时钟初始化函数
//pll:选择的倍频数,从2开始,最大值为16  
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;   
MYRCC_DeInit();  //复位并配置向量表
  RCC->CR|=0x00000001;  //内部高速时钟使能HSION
while(!(RCC->CR>>1));//等待内部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;  //抵消2个单位(因为是从2开始的,设置0就是2)
RCC->CFGR|=PLL<<18;   //设置PLL值 2~16
RCC->CFGR|=1<<16;  //PLLSRC ON 
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;
}    
}    
 
int main(void)
{   
Stm32_Clock_Init(8);   //系统时钟设置
uart_init(64,115200); //串口初始化为115200
delay_init(64);     //延时初始化 
send_init();     //初始化与LED连接的硬件接口
  TIM3_Int_Init(4999,6400);//10Khz的计数频率,计数5K次为500ms  
  while(1)
{
MCU2=!MCU2;
delay_ms(200);   
}
}  


对照中文手册 使能内部时钟 主程序改为8倍频 系统工作不正常。请问是哪设置不对????

最佳答案

查看完整内容[请看2#楼]

PLL的时钟来源选错了    RCC->CFGR&=~(1<<16); //PLLSRC = HSI/2 = 4MHz  你选的是HSE
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5787
金钱
5787
注册时间
2013-11-22
在线时间
1213 小时
发表于 2015-10-19 16:19:03 | 显示全部楼层
PLL的时钟来源选错了    RCC->CFGR&=~(1<<16); //PLLSRC = HSI/2 = 4MHz 
你选的是HSE
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1853
金钱
1853
注册时间
2014-6-27
在线时间
985 小时
发表于 2015-10-19 16:56:33 | 显示全部楼层
用内部8M的,不用设置了,默认就是了。
回复

使用道具 举报

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2013-12-6
在线时间
5 小时
 楼主| 发表于 2015-10-19 18:09:31 | 显示全部楼层
回复【2楼】TinyBoy:
---------------------------------
这个我知道,但是那个我想倍频到64m
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 20:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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