OpenEdv-开源电子网

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

初始化了时钟,但是延时不准确

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-6-7
在线时间
0 小时
发表于 2015-11-18 16:53:47 | 显示全部楼层 |阅读模式
5金钱
我用了原子战舰的库函数版代码,写了个闪烁灯,延时delay_ms(1000);闪烁大约延时要3~4秒,这是怎么回事,我已经打开了SystemInit    
 IMPORT  __main
 
                IMPORT  SystemInit
                LDR     R0, =SystemInit
                BLX     R0        
                 LDR     R0, =__main
                 BX      R0
                 ENDP

最佳答案

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

针对STM32F105RBT6,这类 STM32F10X_CL类别的器件,如果原子哥代码的时钟初始化后时钟有误,可使用一下代码,初始化时钟。 void RCC_Configuration(void) {   int HSEStartUpStatus ;     RCC_DeInit();      RCC_HSEConfig(RCC_HSE_ON);   //RCC_HSE_ON——HSE????(ON)     HSEStartUpStatus = RCC_WaitForHSEStartUp ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-6-7
在线时间
0 小时
 楼主| 发表于 2015-11-18 16:53:48 | 显示全部楼层
针对STM32F105RBT6,这类 STM32F10X_CL类别的器件,如果原子哥代码的时钟初始化后时钟有误,可使用一下代码,初始化时钟。
void RCC_Configuration(void)
{
  int HSEStartUpStatus ;
 
  RCC_DeInit();
  
  RCC_HSEConfig(RCC_HSE_ON);   //RCC_HSE_ON——HSE????(ON)
 
  HSEStartUpStatus = RCC_WaitForHSEStartUp();
 
  if(HSEStartUpStatus == SUCCESS)         
  {
 
    RCC_HCLKConfig(RCC_SYSCLK_Div1);   
  
    RCC_PCLK2Config(RCC_HCLK_Div1);    
    
RCC_PCLK1Config(RCC_HCLK_Div2);    
 
    FLASH_SetLatency(FLASH_Latency_2);     
 
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   
 
    RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_9);  //×???RCC_PLLSource_PREDIV1???????ê?¨????????????????
  
    RCC_PLLCmd(ENABLE); 
 
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)      
       {
       }
 
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
 
    while(RCC_GetSYSCLKSource() != 0x08)        //0x08LL??????
       { 
       }
    }
 
}
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-11-18 18:01:33 | 显示全部楼层
看你板子的晶振和我们板子的是否一致
开往春天的手扶拖拉机
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-6-7
在线时间
0 小时
 楼主| 发表于 2015-11-18 18:23:42 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
是8M的,没错
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-11-18 18:27:51 | 显示全部楼层
http://www.openedv.com/posts/list/62920.htm
看这个帖子的7楼,以及后面的回复
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-6-7
在线时间
0 小时
 楼主| 发表于 2015-11-18 18:35:52 | 显示全部楼层
回复【4楼】229382777@qq.com:
前辈,请问有没有,库函数版的系统时钟配置的代码啊,原子哥的都是直接操作寄存器的
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-11-18 19:26:50 | 显示全部楼层
回复【5楼】googleyang123:
---------------------------------
前辈不敢当.......库函数不也是在操作寄存器吗,库函数版本里面SystemInit打开来也是在操作寄存器,用库函数操作自己还没有试过,你可以试试
我的博客:http://blog.csdn.net/itdo_just
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 07:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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