你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
liuxingxyz 提问时间:2019-10-14 20:32 /
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。
收藏 评论6 发布时间:2019-10-14 20:32

举报

6个回答
慎微 回答时间:2019-10-15 10:32:58
为何两个 TIM1_CCER2? 呢  这里有问题  
TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x01; //捕获使能
liuxingxyz 回答时间:2019-10-16 00:43:07
mikecai 发表于 2019-10-15 10:32
为何两个 TIM1_CCER2? 呢  这里有问题  
TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x ...

第一句是配置上升沿中断,第二句是配置捕捉使能;现在就是能产生中断,但是TIM1_CCR3寄存器中没有值,不知道怎么回事,能帮我看下吗,谢谢
liuxingxyz 回答时间:2019-10-16 00:43:32
mikecai 发表于 2019-10-15 10:32
为何两个 TIM1_CCER2? 呢  这里有问题  
TIM1_CCER2 |= ~0x02;//上升沿或者高电平触发
  TIM1_CCER2 |= 0x ...

第一句是配置上升沿中断,第二句是配置捕捉使能;现在就是能产生中断,但是TIM1_CCR3寄存器中没有值,不知道怎么回事,能帮我看下吗,谢谢!
慎微 回答时间:2019-10-16 08:37:23
建议用 cubeMX ,选择 您的STM8s 生成project,再定义 Time1,生成初始代码。

评分

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

查看全部评分

liuxingxyz 回答时间: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数据不变化,都是一个值,这个是什么原因,而且值的时间也不对?
butterflyspring 回答时间:2019-10-23 17:42:13
调试时可以看看计数器的值走不走

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版