关于SysTick 程序的疑惑
看网上教程都是这样写的,有点不懂void SysTick_Init(void){
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
if (SysTick_Config(SystemCoreClock / 100000))
{
/* Capture error */
while (1);
}
}其中F072中是这样定义的:uint32_t SystemCoreClock = 48000000;而F1.3中,是72000000?
没用过072.。我觉得是因为主频不同吧。。103的是72M的 zfz0122 发表于 2015-1-8 10:06
没用过072.。我觉得是因为主频不同吧。。103的是72M的
嗯,所以我才没想通 072主频 48M,103主频72M,看看手册吧,网上的都是103的教程,下个I2C源码,错误百出,还是照着072的库文件看吧 本帖最后由 wambob 于 2015-1-8 10:37 编辑
CPU不一样,库文件里定义的uint32_t SystemCoreClock也不一定相同
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
uint32_t ticks 就是滴答
wambob 发表于 2015-1-8 10:11
CPU不一样,库文件里定义的uint32_t SystemCoreClock也不一定相同
你没理解我的意思,一个定义的是48,一个定义的是72 ,我刚说了啊 主频不同,相应的分频系数也不同,这样才能实现与硬件无关 本帖最后由 wambob 于 2015-1-8 10:40 编辑
数码小叶 发表于 2015-1-8 10:16
你没理解我的意思,一个定义的是48,一个定义的是72 ,我刚说了啊
明白了啊,你不就是说两的时钟不一样吗,一个48,一个72,CPU不一样,怎么能一样,除非你超频 if (SysTick_Config(SystemCoreClock / 1000))
看着一句,如果是F0那么systic计数值就等于(48M/1000),当计数到这么多产生中断,而计一个数的时间为 SystemCoreClock(或者它的1/8),SystemCoreClock/(48M/1000)就等于1000Hz,即为1ms,对于f103同理还是1ms中断一次! 【经验分享】STM32中实用的精确延时方法
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=598792&fromuid=2091303
(出处: 意法半导体STM32/STM8技术社区)
看看我的帖子,比这个好多了
页:
[1]
2