打印
[STM8]

求助TIM4配合LSI奇怪的延时

[复制链接]
1441|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yszong|  楼主 | 2021-8-8 18:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片是stm8s103f3p6,fmaster选取LSI,LSI_EN enable
奇怪的问题,本意是 tim4 1分频,arr 128,那么每次溢出1ms,但是奇怪的是,有时候时间是一倍,有时候程序在enableInterrupts就死掉了,请问是哪儿出错了呢

使用特权

评论回复
沙发
supernan| | 2021-8-8 18:51 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
yszong|  楼主 | 2021-8-8 18:54 | 只看该作者
unsigned long elapseTime = 0;



void DelayMS(unsigned int ms) {

  unsigned long lmttime = elapseTime + ms;

  while(lmttime >= elapseTime);

  return;

}



int main( void )

{

  CLK_DeInit();

  

  CLK_LSICmd(ENABLE);

  CLK_ClockSwitchConfig(CLK_SWITCHMODE_MANUAL, CLK_SOURCE_LSI, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE);

  while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY)==RESET);

  CLK_ClockSwitchCmd(ENABLE);  

  while(CLK_GetSYSCLKSource() != CLK_SOURCE_LSI){

  }

  

  TIM4_DeInit();

  TIM4_TimeBaseInit(TIM4_PRESCALER_1, 128);

  TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);

  TIM4_SetCounter(0x00);

  TIM4_Cmd(ENABLE);

  



  GPIO_DeInit(GPIOB);

  GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_LOW_SLOW);

  

  GPIO_WriteReverse(GPIOB, GPIO_PIN_5);

  

  enableInterrupts();

  

  while (1) {

    DelayMS(2000);

    GPIO_WriteReverse(GPIOB, GPIO_PIN_5);

  }

  

  return 0;

}



INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)

{

   elapseTime++;

   TIM4_ClearITPendingBit(TIM4_IT_UPDATE);

}

使用特权

评论回复
地板
dingy| | 2021-8-8 18:58 | 只看该作者
没看明白,你用cubeMX配置试试

使用特权

评论回复
5
stly| | 2021-8-8 19:00 | 只看该作者
这个没有003好用。

使用特权

评论回复
6
yszong|  楼主 | 2021-8-8 19:02 | 只看该作者
还是没解决,难道是系统资源需要占用很大一部分LSI的频率?

使用特权

评论回复
7
zhenykun| | 2021-8-8 19:04 | 只看该作者
你如果选择LSI作为 主 时钟, 你还须通过修改配置字使能它。

使用特权

评论回复
8
yszong|  楼主 | 2021-8-8 19:08 | 只看该作者
0xD2: LSI selected as master clock source (only if LSI_EN option bit is set)

使用特权

评论回复
9
stly| | 2021-8-8 19:10 | 只看该作者
你通过STVP直接修改完成。

使用特权

评论回复
10
yszong|  楼主 | 2021-8-8 19:12 | 只看该作者
LSI_EN已开

使用特权

评论回复
11
dingy| | 2021-8-8 19:14 | 只看该作者
我是强调要通过 修改配置字节。

使用特权

评论回复
12
huangchui| | 2021-8-8 19:17 | 只看该作者
你代码里是否开启了其它中断、开启了看门狗等而又没有做
相关处理。

使用特权

评论回复
13
yszong|  楼主 | 2021-8-8 19:20 | 只看该作者
上面的代码就是几乎全部的代码了,没有其他内容。

使用特权

评论回复
14
yszong|  楼主 | 2021-8-8 19:27 | 只看该作者
而且目前来看只是延时时间不对,误差一倍多。

使用特权

评论回复
15
stly| | 2021-8-8 19:30 | 只看该作者
确实很奇怪

使用特权

评论回复
16
songqian17| | 2021-8-8 19:32 | 只看该作者
时钟配置问题吧

使用特权

评论回复
17
dingy| | 2021-8-8 19:34 | 只看该作者
时钟配置吧

使用特权

评论回复
18
yszong|  楼主 | 2021-8-8 19:37 | 只看该作者
没觉得,以上是全部的代码

使用特权

评论回复
19
午夜粪车| | 2021-8-8 19:39 | 只看该作者
时钟配置有问题

使用特权

评论回复
20
heweibig| | 2021-8-8 19:42 | 只看该作者
确实很奇怪

使用特权

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

本版积分规则

830

主题

11379

帖子

4

粉丝