本帖最后由 静风沐雨 于 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);
}
参照
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 );
}
一周热门 更多>