打印
[STM32F1]

开发板延迟函数delay_ms时间不对,求助

[复制链接]
3431|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcjy|  楼主 | 2014-12-17 11:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个程序的delay_ms函数来自    −ALIENTEK战舰 STM32 开发板库函数教程
在之前的板子上正常,新换了一批板(一样的原理图),这个delay_ms的时间大约变成8倍了。大家有没有思路是什么问题? MCU是STM32F03ZE
int main(void)
{
        delay_init();
        DBG_USART_Init(115200);
        printf("Input command in 3 seconds.");
        delay_ms(1000);
        ......


void delay_init()         
{

#ifdef OS_CRITICAL_METHOD         //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了.
        u32 reload;
#endif
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);        //选择外部时钟  HCLK/8
        fac_us=SystemCoreClock/8000000;        //为系统时钟的1/8  
         
#ifdef OS_CRITICAL_METHOD         //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了.
        reload=SystemCoreClock/8000000;                //每秒钟的计数次数 单位为K          
        reload*=1000000/OS_TICKS_PER_SEC;//根据OS_TICKS_PER_SEC设定溢出时间
                                                        //reload为24位寄存器,最大值:16777216,在72M下,约合1.86s左右       
        fac_ms=1000/OS_TICKS_PER_SEC;//代表ucos可以延时的最少单位          
        SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;           //开启SYSTICK中断
        SysTick->LOAD=reload;         //每1/OS_TICKS_PER_SEC秒中断一次       
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;           //开启SYSTICK   
#else
        fac_ms=(u16)fac_us*1000;//非ucos下,代表每个ms需要的systick时钟数   
#endif
}
沙发
mcjy|  楼主 | 2014-12-17 12:15 | 只看该作者
为嘛没有人理我呢

使用特权

评论回复
板凳
mmuuss586| | 2014-12-17 12:28 | 只看该作者
想办法测试下,2块板子的主频是否一样;

写2个定时器函数对比下也行,应该是主频不一样;

使用特权

评论回复
地板
mcjy|  楼主 | 2014-12-17 12:36 | 只看该作者
mmuuss586 发表于 2014-12-17 12:28
想办法测试下,2块板子的主频是否一样;

写2个定时器函数对比下也行,应该是主频不一样;

谢谢答复。原先的板子已经不在手里了。测主频是不是用示波器呢

使用特权

评论回复
5
mcjy|  楼主 | 2014-12-17 13:46 | 只看该作者
是硬件问题……晶振的电容焊错了

使用特权

评论回复
6
mcjy|  楼主 | 2014-12-17 13:51 | 只看该作者
失误了,无法结贴了。抱歉

使用特权

评论回复
7
搞IT的| | 2014-12-17 18:49 | 只看该作者
mcjy 发表于 2014-12-17 12:15
为嘛没有人理我呢

不好意思,看的不是很懂。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝