OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11498|回复: 6

求助!stm8S外部中断?

[复制链接]

35

主题

227

帖子

3

精华

高级会员

Rank: 4

积分
956
金钱
956
注册时间
2014-3-5
在线时间
35 小时
发表于 2014-4-11 23:04:03 | 显示全部楼层 |阅读模式

各位大哥,小弟最近用槽型光耦做个多通道计数器,用下降沿触发中断,用的STM8S105K4 32引脚,准备用20个IO用来中断,可以实现吗?

现在测的一个IO没有问题,但是多个的时候,貌似从PB_IDR读的数据有问题,或者程序错了,结果不是期望的,下面请各位评评程序:

void Exti_Init(void)
{
  //PB0 上拉输入
  B_DDR &= (CLRBIT0|CLRBIT1|CLRBIT2|CLRBIT3|CLRBIT4|CLRBIT5|CLRBIT6|CLRBIT7);
  B_CR1 |= (SETBIT0|SETBIT1|SETBIT2|SETBIT3|SETBIT4|SETBIT5|SETBIT6|SETBIT7);
  //下降沿触发
  EXTI_CR1 |= SETBIT3;
  EXTI_CR1 &= CLRBIT2;
  //开启端口中断
  B_CR2 |= (SETBIT0|SETBIT1|SETBIT2|SETBIT3|SETBIT4|SETBIT5|SETBIT6|SETBIT7);
  //PB_ODR=0x00;
}

 

@far @interrupt void EXTI0_PB_IRQHandler (void)//Port B 01234567
{
 _asm("sim");    //关总中断
  //在此添加case代码 判断外部中断具体引脚   及对应的服务函数
/* switch(PB_IDR)
{
 case 0x01:  Uart2_Pchar('0'); break;
 case 0x02:  Uart2_Pchar('1'); break;
 case 0x03:  Uart2_Pchar('2'); break;
 case 0x08:  Uart2_Pchar('3'); break;
 case 0x10:  Uart2_Pchar('4'); break;
 case 0x20:  Uart2_Pchar('5'); break;
 case 0x40:  Uart2_Pchar('6'); break;
 case 0x80:  Uart2_Pchar('7'); break;
}*/
 if(!(PB_IDR&0X01))
 {   
  Uart2_Pchar('0');
 }
 if(!(PB_IDR&0X02))
 {   
  Uart2_Pchar('1');
 }
 if(!(PB_IDR&0X04))
 {   
  Uart2_Pchar('2');
 }
 if(!(PB_IDR&0X08))
 {   
  Uart2_Pchar('3');
 }
 if(!(PB_IDR&0X10))
 {   
  Uart2_Pchar('4');
 }
 if(!(PB_IDR&0X20))
 {   
  Uart2_Pchar('5');
 }
 if(!(PB_IDR&0X40))
 {   
  Uart2_Pchar('6');
 }
 if(!(PB_IDR&0X80))
 {   
  Uart2_Pchar('7');
 }

 _asm("rim");    //开总中断

}

 

比如现在将线接在PB4上,其他悬空,串口应该只输出 4

但是一直输出47

接在其他引脚上后面都带个7

还有好像PB6 7 不能中断,但手册上没有找到为什么?

 

把看到的有意义的例子进行扩充,并将其切实的运用到自己的设计中。 应用确实不容易,水平是在不断的实践中完善和发展的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

227

帖子

3

精华

高级会员

Rank: 4

积分
956
金钱
956
注册时间
2014-3-5
在线时间
35 小时
 楼主| 发表于 2014-4-11 23:05:07 | 显示全部楼层
把看到的有意义的例子进行扩充,并将其切实的运用到自己的设计中。 应用确实不容易,水平是在不断的实践中完善和发展的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-4-11 23:52:10 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

35

主题

227

帖子

3

精华

高级会员

Rank: 4

积分
956
金钱
956
注册时间
2014-3-5
在线时间
35 小时
 楼主| 发表于 2014-4-12 09:29:32 | 显示全部楼层
求解决?不然只有换方案了,得用十片stc15F104,之前看中的就是Stm8S的中断功能,难道要换成STM32 ?
把看到的有意义的例子进行扩充,并将其切实的运用到自己的设计中。 应用确实不容易,水平是在不断的实践中完善和发展的。
回复 支持 反对

使用道具 举报

35

主题

227

帖子

3

精华

高级会员

Rank: 4

积分
956
金钱
956
注册时间
2014-3-5
在线时间
35 小时
 楼主| 发表于 2014-4-12 19:16:38 | 显示全部楼层
没有大神帮忙吗,只有换方案了
把看到的有意义的例子进行扩充,并将其切实的运用到自己的设计中。 应用确实不容易,水平是在不断的实践中完善和发展的。
回复 支持 反对

使用道具 举报

3

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-5-6
在线时间
0 小时
发表于 2014-5-6 16:31:44 | 显示全部楼层
20个IO用来中断 同时开,楼主好牛逼啊!
回复 支持 反对

使用道具 举报

35

主题

227

帖子

3

精华

高级会员

Rank: 4

积分
956
金钱
956
注册时间
2014-3-5
在线时间
35 小时
 楼主| 发表于 2014-5-6 19:16:51 | 显示全部楼层
回复【6楼】今夜雨寒:
---------------------------------
经实践,不行。。。PB口好像最多开5个。是什么原因呢,已经没有让中断嵌套,尽量不冲突,只是响应一下也不行?
把看到的有意义的例子进行扩充,并将其切实的运用到自己的设计中。 应用确实不容易,水平是在不断的实践中完善和发展的。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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