OpenEdv-开源电子网

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

初始化使用HSI作为时钟源问题

[复制链接]

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2018-3-13
在线时间
16 小时
发表于 2019-1-3 10:27:28 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 静风沐雨 于 2019-1-3 10:40 编辑

开发板复位 CLK_ICKCR_HSIRDY 一直是处在准备好的状态"1", 但是我实际使用中,使用原子的延时函数,发现误差挺大2ms的延时测试为2.12ms,
我在clk初始化后面加一个10us延时,延时函数就准了,2ms延时,测试2.00x ms。
SystemClockInit(CLK_SOURCE_HSI,CLK_PRESCALER_1);
DelayInit(16);
DelayUs(10u);


我想问下使用内部时钟函数的时候该怎么写比较好?我这种情况是不是因为时钟没稳定造成的?

时钟函数代码;
CLK->SWR = CLK_SOURCE_HSI;
CLK->CKDIVR = CLK_PRESCALER_1;      
while(0u == ((CLK->ICKCR)& CLK_ICKCR_HSIRDY)){}
CLK->SWCR |= CLK_SWCR_SWEN;

while(1)循环体中的内容
{
GPIO_SetBits( GPIOF,  GPIO_Pin_7);
  DelayUs(1000u);

  GPIO_ResetBits( GPIOF,  GPIO_Pin_7);
  DelayUs(1000u);
}


参照
QQ图片20190103102700.png

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-1-5 01:44:38 | 显示全部楼层
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2014-10-5
在线时间
34 小时
发表于 2019-1-15 04:54:18 | 显示全部楼层
void ConfigClock( void ){
  CLK_ICKR = ( 1 << CLK_HSIEN );            /* 使能内部高速RC OSC */
  while(( CLK_ICKR & ( 1 << CLK_HSIRDY )) == 0 );   
  
  CLK_CKDIVR = 0;                         /* 分频系数为0, = 16.000MHz */  
  CLK_PCKENR1 = ( 1 << CLK_TM1_ENABLE ) | ( 1 << CLK_TM2_ENABLE )
                | ( 1 << CLK_TM4_ENABLE );
  CLK_PCKENR2 = ( 1 << CLK_ADC_ENABLE );
  CLK_CSSR |= ( 1 << CLK_CSSD ) | ( 1 << CLK_CSSEN );
}
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 13:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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