打印
[STM8]

stm8s103f3p的输入捕获问题

[复制链接]
4628|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
铭天|  楼主 | 2014-5-12 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近遇到一个问题,这片ic输入捕获怎么搞都不进中断,操作寄存器和库函数都不进中断
我的初始化代码是这样的
TIM1_PSCRH =  0;
TIM1_PSCRL =  15;

TIM1_CCER1 = 0X00;    //禁止捕捉
TIM1_CCMR1 = 0X01;    //IC1映射在TI1FP1上  不分频、滤波
TIM1_CCER1 = 0X02;    //下降沿捕捉
TIM1_SR2   = 0X00;    //清中断标志
TIM1_CCER1|= 0X03;    //使能捕获
TIM1_IER   = 0X02;    //使能捕获中断
TIM1_CR1  |=  0x01;   //使能计数器
不知道是不是没配置对,但是用官方的库,也进不了中断,不知道什么原因,求大侠指点!!!!
沙发
zxc729| | 2014-5-12 22:11 | 只看该作者
明天我把我的程序发你

使用特权

评论回复
板凳
铭天|  楼主 | 2014-5-12 22:22 | 只看该作者
446351032@qq.com非常感谢

使用特权

评论回复
地板
zxc729| | 2014-5-13 08:15 | 只看该作者
已发,请查收。只发了初始化程序

使用特权

评论回复
5
铭天|  楼主 | 2014-5-13 08:32 | 只看该作者
貌似还是不进中断呢。。。

使用特权

评论回复
6
zxc729| | 2014-5-13 10:04 | 只看该作者
我的程序是一个产品中用的,使用没任何问题

使用特权

评论回复
7
铭天|  楼主 | 2014-5-14 14:33 | 只看该作者
你用的是stm8s103f3p这个片子么,在用pwm时居然TIME2_CH3这个通道没有反应,其他两个通道都正常!

使用特权

评论回复
8
铭天|  楼主 | 2014-5-14 14:34 | 只看该作者
之前的捕获也可能是这个原因

使用特权

评论回复
9
铭天|  楼主 | 2014-5-14 14:35 | 只看该作者
zxc729 发表于 2014-5-13 10:04
我的程序是一个产品中用的,使用没任何问题

你用的什么型号呢

使用特权

评论回复
10
铭天|  楼主 | 2014-5-14 14:51 | 只看该作者
问题找到了,选了一个复用功能,糗大了。。。

使用特权

评论回复
11
zxc729| | 2014-5-14 15:09 | 只看该作者
忘了在哪见到的一句话:在调试STM8时,如果某个问题一直搞不定,就要看下复用功能打开了没有。

使用特权

评论回复
12
xiaoliaook| | 2014-6-17 21:47 | 只看该作者
铭天 发表于 2014-5-14 14:51
问题找到了,选了一个复用功能,糗大了。。。

你好,我现在也是用STM8S103F3P的TIM1_CH1的输入捕获来做红外解码的,进不了输入捕获中断函数,初始化代码为:

    void Driver_Time10msON(void)       
        {                                                                                                                                               
                        CLK_PCKENR1 |= 0x80;                            //开TIM1时钟       
                        TIM1_EGR = 0x01;                                                   //允许产生更新事件                                                                                       
                        TIM1_PSCRH = 0x00;                                         //2M时钟 设定计数时钟的分频,计数周期为1us                                                                                               
                        //TIM1_PSCRL = 0x0f;  
      TIM1_PSCRL = 0x01;         //计数器的时钟频率(fCK_CNT)等于fCK_PSC/( PSCR[15:0]+1)。               
                        //初始化计数器值,设定自动重载寄存器值                                                                                                                               
                        /*TIM1_ARRH = 0x04;         TIM1_ARRL = 0xe2; TIM1_CNTRH = 0x04; TIM1_CNTRL = 0xe2;*/
                        TIM1_ARRH = 0x27;                                                                                                                                
                        TIM1_ARRL = 0x10;                                                                                                                                
                        TIM1_CNTRH = 0x27;                                                                                                                                
                        TIM1_CNTRL = 0x10;                                       
                        TIM1_CR1 = 0x01;         //使能计数器       
                        TIM1_IER = 0x01;                 //允许更新中断                                                                                                                               
        }


void Driver_capture_riseON(void)       
{
       
        TIM1_IER&=0xfd;    //0 :disable 捕获中断
        TIM1_CCMR1|=0x01;  //位1:0 CC1S[1:0]01: CC1 channel is configured as input, IC1 is mapped on TI1FP1
        TIM1_CCMR1&=0x0f; //位7:4
       
        //TIM1_CCMR1|=0x30; //位7:4 IC1F[3:0]:输入捕获1滤波器,0x11只有连续采样到8个相同的TI1信号,信号才为有效(采样频率为fMASTER)。
        TIM1_CCER1&=0xfd;    //bit1 cc1p :0  rise或高电平  1 down 或低电平
        TIM1_CCMR1&=0xf3;          //捕获发生在每一个有效的电平转换时刻,因此预分频器被禁止(写TIM1_CCMR1寄存器的IC1PS=00)
        // 位3:2  IC1PSC[1:0]:输入/捕获1预分频器 00:无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获;
        TIM1_CCER1|=0x01;  //This bit0 determines if a capture of the counter value can be made in the input capture/compare
                     //register 1 (TIM1_CCR1) or not.  //0: Capture disabled  //1: Capture enabled
                                                                                 
       
    TIM1_SR1&=0xfd;       // 清CC1IF标志位                        位1CC1IF:捕获/比较1中断标记
                TIM1_SR2=0;                                 
   TIM1_IER|=0x02;   //bit1  1:enable  0 :disable 捕获中断
       
}



中断向量表的配置如下:        {0x82, Driver_Time_Interrupt}, /* irq11 */
                                        {0x82, Driver_Time_capture_Interrupt}, /* irq12 */



看到你的帖子已经解决了这个输入捕获的问题,能帮我看下吗,最好能提供你这么初始化的代码给我,不胜感激,我的872968469@qq.com

使用特权

评论回复
13
flcc| | 2014-9-9 15:10 | 只看该作者
亲 能把红外解码的代码给我发一份吗?870954551@qq.com

使用特权

评论回复
14
jixingan| | 2014-12-5 15:36 | 只看该作者
亲,能把输入捕获的代码发给我一份吗564245859@qq.com,感激不尽

使用特权

评论回复
15
白开水key| | 2015-3-17 12:12 | 只看该作者
zxc729 发表于 2014-5-13 08:15
已发,请查收。只发了初始化程序

您好  可以给我一份吗 qq0121ww@163.com

使用特权

评论回复
16
icecut| | 2015-3-17 12:18 | 只看该作者
铭天 发表于 2014-5-14 14:51
问题找到了,选了一个复用功能,糗大了。。。

90%问题是粗心.

使用特权

评论回复
17
lxybkb| | 2015-3-19 10:17 | 只看该作者
您好  可以给我一份吗 450173151@qq.com  :)

使用特权

评论回复
18
lxybkb| | 2015-3-25 17:24 | 只看该作者

楼主  您有没时间帮我看下个程序  关于TIME1 捕捉的     跪求指导

使用特权

评论回复
19
搞IT的| | 2015-3-26 13:19 | 只看该作者
帮顶!!!

使用特权

评论回复
20
769854714| | 2015-5-21 16:11 | 只看该作者
STM8S的复用功能怎么打开啊  比如103的TIM2_CH2  这个不是直接用就可以吗

使用特权

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

本版积分规则

4

主题

14

帖子

1

粉丝