[STM8] 求助TIM4配合LSI奇怪的延时

[复制链接]
 楼主| 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配置试试
stly 发表于 2021-8-8 19:00 | 显示全部楼层
这个没有003好用。
 楼主| yszong 发表于 2021-8-8 19:02 | 显示全部楼层
还是没解决,难道是系统资源需要占用很大一部分LSI的频率?
zhenykun 发表于 2021-8-8 19:04 | 显示全部楼层
你如果选择LSI作为 主 时钟, 你还须通过修改配置字使能它。
 楼主| yszong 发表于 2021-8-8 19:08 | 显示全部楼层
0xD2: LSI selected as master clock source (only if LSI_EN option bit is set)
stly 发表于 2021-8-8 19:10 | 显示全部楼层
你通过STVP直接修改完成。
 楼主| yszong 发表于 2021-8-8 19:12 | 显示全部楼层
LSI_EN已开
dingy 发表于 2021-8-8 19:14 | 显示全部楼层
我是强调要通过 修改配置字节。
huangchui 发表于 2021-8-8 19:17 | 显示全部楼层
你代码里是否开启了其它中断、开启了看门狗等而又没有做
相关处理。
 楼主| yszong 发表于 2021-8-8 19:20 | 显示全部楼层
上面的代码就是几乎全部的代码了,没有其他内容。
 楼主| yszong 发表于 2021-8-8 19:27 | 显示全部楼层
而且目前来看只是延时时间不对,误差一倍多。
stly 发表于 2021-8-8 19:30 | 显示全部楼层
确实很奇怪
songqian17 发表于 2021-8-8 19:32 | 显示全部楼层
时钟配置问题吧
dingy 发表于 2021-8-8 19:34 | 显示全部楼层
时钟配置吧
 楼主| yszong 发表于 2021-8-8 19:37 | 显示全部楼层
没觉得,以上是全部的代码
午夜粪车 发表于 2021-8-8 19:39 | 显示全部楼层
时钟配置有问题
heweibig 发表于 2021-8-8 19:42 | 显示全部楼层
确实很奇怪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

830

主题

11379

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部