F103C8T6移植delay程序后,延时变短的问题

2019-07-21 06:51发布

在做实验的时候,考虑到F103C8T6根F103ZET6似乎除了资源不同,同属一个系列的,于是将ZET6的延时函数delay直接用在C8T6上,发现延时的时候比正常时间短很多,设置1秒延时,实际出来的大概是0.16秒,一直找不到原因,到处搜索,无果。
http://www.openedv.com/posts/list/0/63500.htm这个帖子里面有一丁点的讨论,不过似乎给出的解决方案不能解决共性问题(至少我按照给出的方法没法解决)
http://www.openedv.com/thread-101469-1-1.html这个帖子里面给了一个模板,测试了一下,它的延时是准确的
对比了好久,尝试找出他们的区别,也无果。

有哪位已经把这个弄明白了的大佬,请不要吝啬自己的智慧,分享出来,让以后遇到这种问题的小伙伴有一个好的参照。。
谢谢啦

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
追破风的小石头
2019-07-22 23:04
追破风的小石头 发表于 2018-11-1 16:30
重新配置一下时钟即可,原子哥的代码默认是使用72M的主时钟,那么你的delay_init函数里面这个fasc_us这个基 ...

付上我更改后的代码
void delay_init()
{

        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);        //选择外部时钟  HCLK/8
//        fac_us=SystemCoreClock/8000000;                                //为系统时钟的1/8  
        fac_us = 6 ;
        fac_ms=(u16)fac_us*1000;                                        //非OS下,代表每个ms需要的systick时钟数   
}                       
我使用的是C8T6内部8M晶振经过倍频后达到48M作为主时钟的,那么SysTick_CLKSource_HCLK_Div8就是6M所以那个fasc_us 直接定义为6即可。

一周热门 更多>