打印
[STM8]

STM8L152C6 TIM4只能进一次中断

[复制链接]
3644|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaox314|  楼主 | 2013-12-31 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的库,应该说中断过程就这么简单,但就是不知道为什么只能进一次中断,各位有时间的路过的看下,随便帮个忙找找问题?
#include "stm8l15x.h"
////////////延时函数
void delay(int i)
{ int  j;
  for(j=0;j<i;j++)
   {;}
}
void CLK_Init(void)
{
CLK_DeInit();
/* High speed internal clock prescaler: 1 */
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
  /* Enable TIM4 CLK */
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);
}
void IO_Init(void)
{
GPIO_DeInit(GPIOE);
GPIO_Init(GPIOE, GPIO_Pin_7, GPIO_Mode_Out_PP_Low_Fast);
GPIO_Write(GPIOE,0xf0);
}
void TIM4_Config(void)
{

TIM4_TimeBaseInit(TIM4_Prescaler_128, 0x7c);
  /* Clear TIM4 update flag */
  TIM4_ClearFlag(TIM4_FLAG_Update);
  /* Enable update interrupt */
  TIM4_ITConfig(TIM4_IT_Update, ENABLE);
  /* Enable TIM4 */
  TIM4_Cmd(ENABLE);
}
void main()
{
IO_Init();
CLK_Init();
TIM4_Config();
  /* enable interrupts */
  enableInterrupts();
while (1)
{
  ;
}
}


这是中断函数:
INTERRUPT_HANDLER(TIM4_UPD_OVF_TRG_IRQHandler,25)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
  u16 count=0 ;
// GPIO_Write(GPIOE,0x00);
  TIM4_ClearITPendingBit(TIM4_IT_Update);
  count++;
  if(count>1000)
  {
   GPIO_ToggleBits(GPIOE,GPIO_Pin_7);
   count=0;
  }
  
}
沙发
xiaox314|  楼主 | 2013-12-31 17:00 | 只看该作者
昨天才开始弄这款单片机,今天就遇到这个问题,进去一次后就在while哪里一直都进不去了!脑细胞死了好几十万,各位高手帮我清清脑!

使用特权

评论回复
板凳
Rain_King| | 2013-12-31 17:40 | 只看该作者
用库函数操作啊...我不习惯用库,都是直接上寄存器.....这个,应该是你的库函数使用有问题吧....

使用特权

评论回复
地板
xiaox314|  楼主 | 2014-1-2 16:41 | 只看该作者
来结贴了,路过的人很好,留字的很少,今天上午仔细看了英文文档,又被官方例程坑了!还好一天给解决了~

使用特权

评论回复
5
l217914| | 2014-1-7 12:00 | 只看该作者
xiaox314 发表于 2014-1-2 16:41
来结贴了,路过的人很好,留字的很少,今天上午仔细看了英文文档,又被官方例程坑了!还好一天给解决了~ ...

你好,请问怎么解决了呢?我用的是定时器2的,也老是进不了中断,郁闷,都搞了好久了

使用特权

评论回复
6
xiaox314|  楼主 | 2014-1-9 08:50 | 只看该作者
l217914 发表于 2014-1-7 12:00
你好,请问怎么解决了呢?我用的是定时器2的,也老是进不了中断,郁闷,都搞了好久了 ...

你可以单步仿真,是否能进一次中断,如果只能进一次,就是没有自动重装,所以初始化的时候TIMx—CR1寄存器ARPE要为1,这点很坑,因为stm8s是0为自动重装!不知道你是否是这个问题~

使用特权

评论回复
7
l217914| | 2014-1-14 16:40 | 只看该作者
xiaox314 发表于 2014-1-9 08:50
你可以单步仿真,是否能进一次中断,如果只能进一次,就是没有自动重装,所以初始化的时候TIMx—CR1寄存 ...

呵呵,问题解决是。是那个stm8的配置文件问题,没有选对设备型号。

使用特权

评论回复
8
769918239| | 2017-12-22 10:52 | 只看该作者
我重装载了后,中断一次都进不去了

使用特权

评论回复
9
xixi2017| | 2017-12-24 15:25 | 只看该作者
STM32的设计的不够完美。

使用特权

评论回复
10
xiaox314|  楼主 | 2017-12-25 17:35 | 只看该作者
769918239 发表于 2017-12-22 10:52
我重装载了后,中断一次都进不去了

呵呵,解决了吗。可以发出代码给你看一下

使用特权

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

本版积分规则

16

主题

732

帖子

7

粉丝