STM8S103F外部触发,捕获/比较寄存器更新了,但无法中断

2020-01-10 19:40发布

本帖最后由 zhcj66 于 2018-6-8 14:32 编辑

调试了2天了如题"STM8S103F外部触发捕获/比较寄存器更新了,但无法中断"不知道咋回事,是程序的问题还是芯片的问题

  1. //程序设置如下
  2. void TIM1_Init(void)
  3. {
  4.   
  5.   GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_IN_FL_IT);
  6.   
  7.   TIM1->CNTRH = 0x00;//清零计数器高8位  
  8.   TIM1->CNTRL = 0x00;//清零计数器低8位
  9.    
  10.   TIM1->ARRH = 0xFF; //自动重装载的值 255
  11.   TIM1->ARRL = 0xFF; //自动重装载的值 255
  12.   TIM1->PSCRH = 0x00;
  13.   TIM1->PSCRL = 0xA0-1; //160分频  正好是10us
  14.    
  15.   TIM1->CCER2 &= ~0x01;//清零CCxE,之后才可配置CCMR
  16.   TIM1->CCMR3 = 0x01;//IC3映射在TI3FP3;无分频;无滤波
  17.   TIM1->CCER2 &= ~0x02;//上升沿或高电平有效
  18.   TIM1->IER |= 0x08; //使能CC3IE中断
  19.   TIM1->CCER2 |= 0x01;//输入捕获使能
  20.   TIM1->CR1 = 0x01; //启动定时器
  21. }

  22. INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)
  23. {//程序无法进入这个中断
  24.    TIM1_ClearITPendingBit(TIM1_IT_CC3);
  25. }
复制代码

中断标志寄存器也置位了,可是就是无法进入中断寄存器;可以确定的是全局中断已经打开,因为定时器2正常工作着.
TIM1_IER值为0x08应该标志位置位后就可以进入中断的,可是就是进不去,在触发的时候TIM1_CCR3也有数据更新
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
zhcj66
1楼-- · 2020-01-11 11:06
openmcu666 发表于 2018-6-8 16:34

TIM2_CAP_COM_VECTOR  怎么定义的?
street
2楼-- · 2020-01-11 12:54
 精彩回答 2  元偷偷看……
zhcj66
3楼-- · 2020-01-11 13:46
street 发表于 2018-6-8 22:42
到官网下载一个最新的库  试试, 说不定能解决呢。

@version V2.2.0
  * @date    30-September-2014
street
4楼-- · 2020-01-11 17:34
zhcj66 发表于 2018-6-9 08:35
@version V2.2.0
  * @date    30-September-2014

不知道了。  前段时间 用的s003 定时器不进中断,换了最新库,重新编译报了几个错误,改正后就能进了。
zhcj66
5楼-- · 2020-01-11 23:21
street 发表于 2018-6-9 11:48
不知道了。  前段时间 用的s003 定时器不进中断,换了最新库,重新编译报了几个错误,改正后就能进了。 ...

你用的哪个版本的库
street
6楼-- · 2020-01-12 04:31
zhcj66 发表于 2018-6-9 14:36
你用的哪个版本的库

  * @version V2.2.0
  * @date    30-September-2014

下载的库不是还有 例程,直接用他的例程看看行不行。

一周热门 更多>