初级会员

- 积分
- 169
- 金钱
- 169
- 注册时间
- 2017-3-4
- 在线时间
- 35 小时
|
1金钱
void delay_init(u8 SYSCLK)
{
#ifdef OS_CRITICAL_METHOD //èç1ûOS_CRITICAL_METHOD¶¨òåáË,ËμÃ÷ê1óÃucosIIáË.
u32 reload;
#endif
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
fac_us=SYSCLK/8; //2»ÂÛêÇ·ñê1óÃucos,fac_us¶¼Dèòaê1óÃ
#ifdef OS_CRITICAL_METHOD //èç1ûOS_CRITICAL_METHOD¶¨òåáË,ËμÃ÷ê1óÃucosIIáË.
reload=SYSCLK/8; //单位为K?
reload*=1000000/OS_TICKS_PER_SEC;//¸ù¾YOS_TICKS_PER_SECé趨òç3öê±¼ä
//reloadÎa24λ¼Ä′æÆ÷,×î′óÖμ:16777216,Ôú168MÏÂ,Ô¼oÏ0.7989s×óóò
fac_ms=1000/OS_TICKS_PER_SEC;//′ú±íucos¿éòÔÑóê±μÄ×îéùμ¥λ
SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk; //¿aÆôSYSTICKÖD¶Ï
SysTick->LOAD=reload; //ÿ1/OS_TICKS_PER_SECÃëÖD¶Ïò»′Î
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //¿aÆôSYSTICK
#else
fac_ms=(u16)fac_us*1000;//·ÇucosÏÂ,′ú±íÿ¸ömsDèòaμÄsystickê±Öóêy
#endif
}
红色字体的单位为什么为K?
|
最佳答案
查看完整内容[请看2#楼]
单位是M!初始化的时候调用delay_init()传递进来的参数比如为168,意思就是168M。SYSCLK=168M。用M的原因就是1M频率的周期是1us
|