搜索
查看: 1125|回复: 6

[求助] 求助,stm8s的输入捕捉进不了中断??谢谢!!!附代码

[复制链接]

该用户从未签到

5

主题

18

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-4
发表于 2019-10-14 20:32:44 | 显示全部楼层 |阅读模式
void TIM1_Init(void)
{
    TIM1_IER  = 0x00;  //禁止中断
    TIM1_EGR  = 0x01;   //允许产生更新标志
    //TIM1_PSCR =0x08; //设置时钟分频 2M/2=1MHz---1us
    TIM1_PSCRH = 0x00;
    TIM1_PSCRL = 0x01;
    TIM1_ARRH  = 0x27;  //0x270F=9999
    TIM1_ARRL  = 0x0F;  //ARR自动装载值   
   
    TIM1_CNTRH = 0x00;  //初值
    TIM1_CNTRL = 0x00;
   
    TIM1_CCMR3 |= 0x01;
    TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x01; //捕获使能
    TIM1_IER   |= 0x08; //允许捕获中断
   
    TIM1_SMCR = 0x54;   //复位触发模式
    TIM1_IER |= 0x01;   //允许中断
    TIM1_CR1 |= 0x81;   //开启定时器
},定时器中断正常,捕捉不能产生中断,用的是TIM1_CH3N通道,单片机型号是STM8S003K3。
回复

使用道具 举报

该用户从未签到

5

主题

613

帖子

138

蝴蝶豆

金牌会员

最后登录
2022-5-19
发表于 2019-10-15 10:32:58 | 显示全部楼层
为何两个 TIM1_CCER2? 呢  这里有问题  
TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x01; //捕获使能
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

18

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-4
 楼主| 发表于 2019-10-16 00:43:07 | 显示全部楼层
mikecai 发表于 2019-10-15 10:32
为何两个 TIM1_CCER2? 呢  这里有问题  
TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x ...

第一句是配置上升沿中断,第二句是配置捕捉使能;现在就是能产生中断,但是TIM1_CCR3寄存器中没有值,不知道怎么回事,能帮我看下吗,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

18

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-4
 楼主| 发表于 2019-10-16 00:43:32 | 显示全部楼层
mikecai 发表于 2019-10-15 10:32
为何两个 TIM1_CCER2? 呢  这里有问题  
TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x ...

第一句是配置上升沿中断,第二句是配置捕捉使能;现在就是能产生中断,但是TIM1_CCR3寄存器中没有值,不知道怎么回事,能帮我看下吗,谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

613

帖子

138

蝴蝶豆

金牌会员

最后登录
2022-5-19
发表于 2019-10-16 08:37:23 | 显示全部楼层
建议用 cubeMX ,选择 您的STM8s 生成project,再定义 Time1,生成初始代码。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

18

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-4
 楼主| 发表于 2019-10-19 12:03:57 | 显示全部楼层
liuxingxyz 发表于 2019-10-16 00:43
第一句是配置上升沿中断,第二句是配置捕捉使能;现在就是能产生中断,但是TIM1_CCR3寄存器中没有值,不 ...

        TIM1_CR1   = 00;     //计数器向上计数
        TIM1_PSCRH = 0x00;   //设置时钟分频 2M/2=1MHz---1us
        TIM1_PSCRL = 0x01;
        TIM1_ARRH  = 0x27;   //0x270F=9999
        TIM1_ARRL  = 0x0F;   //ARR自动装载值   
        
        TIM1_CNTRH = 0x00;   //初值
        TIM1_CNTRL = 0x00;
        
        TIM1_CCMR2 |= 0x01;  //TIM1_CCMR1_CC1S
  TIM1_CCER1 |= ~0x20; //上升沿或者高电平触发//TIM1_CCER1_CC1P
        TIM1_SR1   &=~(0x04);
        TIM1_IER   |= 0x05;  //允许捕获中断
        TIM1_CCER1 |= 0x10;
        
        TIM1_IER   |= 0x01;  //允许捕获中断
        TIM1_CR1   |= 0x05;  //开启定时器


现在捕捉产生中断,但是每次中断TIM1_CCR2数据不变化,都是一个值,这个是什么原因,而且值的时间也不对?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2019-10-23 17:42:13 | 显示全部楼层
调试时可以看看计数器的值走不走
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-8 04:29 , Processed in 1.168575 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表