离愁别绪 发表于 2019-6-19 08:57:11

STM8定时时长搞不清楚

static void CLK_Config(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);//内部高速振荡器8分频16M/8=2M
}
static void TIM4_Config(void)
{
TIM4_TimeBaseInit(TIM4_PRESCALER_2, TIM4_PERIOD); //2分频装载值为100-1
}

按STM8单片机定时时长 T = (TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK
我计算上面应该是100uS定时,但程序原作者却说是1ms定时,谁能帮我看一下,到底时长是多少?不胜感激

离愁别绪 发表于 2019-6-19 08:59:07

刚开始学STM8单片机,对其中的定时时长搞不清楚
#define TIM4_PERIOD   99
static void CLK_Config(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);//内部高速振荡器8分频16M/8=2M
}
static void TIM4_Config(void)
{
TIM4_TimeBaseInit(TIM4_PRESCALER_2, TIM4_PERIOD); //2分频装载值为100-1
}

按STM8单片机定时时长 T = (TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK
我计算上面应该是100uS定时,但程序原作者却说是1ms定时,谁能帮我看一下,到底时长是多少?不胜感激

toofree 发表于 2019-6-19 09:50:12

跑个程序验证一下不就知道了吗,还需要在这纠结?
不是说原作者就不会错,学校的课本都可能错,程序出错很正常。

离愁别绪 发表于 2019-6-19 09:54:04

toofree 发表于 2019-6-19 09:50
跑个程序验证一下不就知道了吗,还需要在这纠结?
不是说原作者就不会错,学校的课本都可能错,程序出错很 ...

程序跑了,确实是1ms 但我计算是100us,百思不得其解,用的 TIM4~8位基本定时

toofree 发表于 2019-6-19 12:20:57

离愁别绪 发表于 2019-6-19 09:54
程序跑了,确实是1ms 但我计算是100us,百思不得其解,用的 TIM4~8位基本定时

那只能说你给的程序不全,把你认为的东西给出来了,没告诉真相。
从错误的前提,给出正确的结果,真的做不到。

yzq2008 发表于 2019-6-26 17:18:00

:)学习学习

butterflyspring 发表于 2019-6-27 17:28:29

应该还有些信息你没注意到。按照你说的不配置,我试了下,确实是100us。 所以一定漏掉了某个条件。再看看寄存器配置:)
页: [1]
查看完整版本: STM8定时时长搞不清楚