OpenEdv-开源电子网

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

时钟设置有问题,高手帮忙看一下。

[复制链接]

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
发表于 2011-8-16 22:59:02 | 显示全部楼层 |阅读模式
一下是我的时钟初始化程序,只有内部8M晶振,因为是STM32F100的芯片,所以最高时钟为24M。我就想配个24M,然后用在USART1上,波特率按照原子的函数设的,但是最后好像达不到要求,所以怀疑时钟设置有问题,高手请扫一眼。。。。

void RCC_Config(void)
{
    FLASH->ACR=0x32;    //FLASH延时为2//放在什么地方最合适?
    //RCC->CR=1;                  //开启内部时钟HSI
//while(RCC->CR&0x2);          //等待HSI准备好
RCC->CR&=0<<24;                 //失能PLLON    
RCC->CFGR|=0x00100002;        //配置PLL 选择HIS/2为PLL的输入 
   //选择6倍频 24M  选择PLL为系统时钟
    
RCC->CR|=1<<24;                //使能PLLON
    while(!(RCC->CR>>25));         //等待PLL锁定
}

世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 00:16:13 | 显示全部楼层
用我那个代码吧,把9倍频设置为3倍频即可.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-8-17 08:35:06 | 显示全部楼层

回复【2楼】正点原子:
---------------------------------
只有内部晶振8M,所以不太一样
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 08:43:11 | 显示全部楼层
内部8M也可以倍频的吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-8-17 08:51:41 | 显示全部楼层
稍微改了一下,还不能用


 void RCC_Config(u8 LL)
{
unsigned char wait=0;   

//MYRCC_DeInit();   //复位并配置向量表
//RCC->CR|=0x1;  //外部高速时钟使能HSEON
//while(!(RCC->CR>>17));//等待外部时钟就绪

RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;

PLL-=2;//抵消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(wait!=0x02)     //等待PLL作为系统时钟设置成功
{   
wait=RCC->CFGR>>2;
wait&=0x03;
}    
}
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-8-17 11:34:44 | 显示全部楼层
哦,不是我的错,上位机的频率不准。。。STM32的波特率太精确了。
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 12:40:30 | 显示全部楼层
??
回复 支持 反对

使用道具 举报

19

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2011-8-8
在线时间
0 小时
 楼主| 发表于 2011-9-6 16:29:23 | 显示全部楼层
“RCC->CR&=0<<24;                 //失能PLLON  ”
这句是错的
世界上有10种人,一种是懂二进制的,另一种是不懂二进制的。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 22:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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