OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 300|回复: 14

STM8L外部中断后,不能正确的读取出该引脚的电平

[复制链接]

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
发表于 2016-12-12 14:33:20 | 显示全部楼层 |阅读模式
4金钱
我向端口D的第4引脚发送频率为125K的PWM,通过触发第4引脚的外部中断,然后用一个数组记录触发后的电平和间隔时间,接收到的电平应该是0101010101...没想到接收到的电平是011011011011....
这是接收PWM的代码


============================
#include <STM8L152C6.h>
_Bool brkPin @PD_IDR:4;
unsigned char jumpSeq;
unsigned char brkEdge[32];
unsigned int imcstData[32];

void initTIM2(void)
{
        CLK_PCKENR1 |= 0x01;
       
        TIM2_CR1 = 0x00;
        TIM2_PSCR = 0x00;
        TIM2_ARRH = 0xff;
        TIM2_ARRL = 0xff;
        TIM2_IER |= 0x01;
}

main()
{
        //系统时钟二分频
        CLK_CKDIVR = 0x01;
        //位4设置双沿中断
        EXTI_CR2 = 0x03;
       
        //PD4配置为中断
        PD_DDR &= 0xef;
        PD_CR1 &= 0xef;
        PD_CR2 |= 0x10;
       
        jumpSeq = 0;
        initTIM2();
        _asm("rim");
       
        while (1);
}

@far @interrupt void brkRec(void)
{
        unsigned char recbit;
        recbit = brkPin;
       
        //清除标志位
        EXTI_SR1 = 0xff;
        EXTI_SR2 = 0xff;
        TIM2_CR1 = 0x00;
       
        imcstData[jumpSeq] = TIM2_CNTRH;
        imcstData[jumpSeq]= (imcstData[jumpSeq]<<8) + TIM2_CNTRL;
        brkEdge[jumpSeq] = recbit;
        TIM2_CNTRH = 0x00;
        TIM2_CNTRL = 0x00;
       
        jumpSeq++;
        if(jumpSeq==32)
                jumpSeq = 0;

        TIM2_CR1 = 0x01;
}
@far @interrupt void TIM2Over(void)
{
        TIM2_SR1 = 0x00;
        TIM2_CR1 = 0x00;
        TIM2_CNTRH = 0x00;
        TIM2_CNTRL = 0x00;
        jumpSeq = 0;
}


这个问题困扰好久了,有没有人来拯救我???
刚开始学,我使用的是STM8L152C6,金钱不多,还请多多帮忙啊!!!

回复

使用道具 举报

  离线 

479

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
115123
金钱
115123
注册时间
2010-12-1
在线时间
865 小时
发表于 2016-12-12 18:20:18 | 显示全部楼层
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-13 08:55:04 | 显示全部楼层
自己也顶一下,我顶顶顶!!!
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-13 10:48:25 | 显示全部楼层
大神们,进来逛逛啊
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-14 08:44:08 | 显示全部楼层
我再顶!!!
回复

使用道具 举报

  离线 

39

主题

588

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1851
金钱
1851
注册时间
2011-9-3
在线时间
82 小时
发表于 2016-12-14 10:42:20 | 显示全部楼层
帮顶。
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-14 15:48:06 | 显示全部楼层
我还顶
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-19 16:02:15 | 显示全部楼层
顶顶!!!
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-26 09:19:19 | 显示全部楼层
。。。。。。我去,还没人吗
回复

使用道具 举报

  离线 

479

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
115123
金钱
115123
注册时间
2010-12-1
在线时间
865 小时
发表于 2016-12-27 22:32:58 | 显示全部楼层
帮顶
回复

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2017-1-12 18:18:44 | 显示全部楼层
。。。。。。。。。。。为什么呢
回复

使用道具 举报

  离线 

20

主题

464

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1335
金钱
1335
注册时间
2015-11-14
在线时间
170 小时
发表于 2017-2-8 17:17:33 | 显示全部楼层
EXTI_CR2 = 3<<6;这样才是设置PD端口为两个边沿都触发吧!如果是0的话就是下降沿和低电平触发
回复

使用道具 举报

  离线 

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2017-2-5
在线时间
13 小时
发表于 2017-2-8 22:53:08 | 显示全部楼层
参考手册中提到,EXTI_CR2只有在CC寄存器的I1和I0位都为1的时候才允许写入,在写EXTI_CR2 = 0x03之前,不知道I1和I0位是否已经置1,建议在写EXTI_CR2 = 0x03之前先写_asm("sim")试试。
回复

使用道具 举报

  离线 

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-3
在线时间
29 小时
发表于 2017-2-17 15:18:52 | 显示全部楼层
我也遇到了这个问题。。PD4按键上拉输入。。还没有解决。。
回复

使用道具 举报

  离线 

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-3
在线时间
29 小时
发表于 2017-2-17 15:19:30 | 显示全部楼层
你解决了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则





QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-10-18 04:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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