打印

请教各位大虾!stm8 PB口与中断冲突问题!

[复制链接]
3955|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kinso|  楼主 | 2010-10-21 18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有一片stm8s103的mcu,pc7做外部中断输入,同时开了uart1中断。现有以下状况,望大虾多多指点:
在开中断的情况下,pb5做模拟I2c SDA引脚,在把SDA从输出变输入状态时,程序跑飞。。。   
在不开中断时,模拟I2C正常。在不把PB5引脚变为输入状态时,其他中断正常。
沙发
kinso|  楼主 | 2010-10-21 19:03 | 只看该作者
确定在切换pb5状态时 程序陷入死循环。
    009CDA    F7             LD        (X), A
}
    009CDB    81             RET
    GPIOx->ODR |= (u8)PortPins;
GPIO_WriteHigh:
    009CDC    FA             OR        A, (X)
    009CDD    F7             LD        (X), A
}
    009CDE    81             RET
    return ((u8)GPIOx->IDR);
GPIO_ReadInputData:
    009CDF    5C             INCW      X
    009CE0    F6             LD        A, (X)
    009CE1    81             RET
    return ((BitStatus)(GPIOx->IDR & (vu8)GPIO_Pin));
GPIO_ReadInputPin:
    009CE2    5C             INCW      X
    009CE3    F4             AND       A, (X)
    009CE4    81             RET
_interrupt_1:
_interrupt_10:
_interrupt_11:
_interrupt_12:
_interrupt_13... +22 symbols not displayed:
    009CE5    9D             NOP
    009CE6    20FD           JRA       _interrupt_1
__low_level_init:
    009CE8    5F             CLRW      X
    009CE9    5C             INCW      X
    009CEA    81             RET
exit:
    009CEB    CC9CD3         JP        _exit
__DebugBreak:
    009CEE    81             RET
    009CEF    FF             DC8       0xFF
    009CF0    00             DC8       0x00
    009CF1    00             DC8       0x00
    009CF2    00             DC8       0x00
    009CF3    FF             DC8       0xFF
    009CF4    00             DC8       0x00
    009CF5    00             DC8       0x00

程序在_interrupt_1:
_interrupt_10:
_interrupt_11:
_interrupt_12:
_interrupt_13... +22 symbols not displayed:
    009CE5    9D             NOP
    009CE6    20FD           JRA       _interrupt_1
处死循环。。。。。。。。
郁闷啊!

使用特权

评论回复
板凳
香水城| | 2010-10-22 14:34 | 只看该作者
是不是有意外的中断发生?

做模拟I2C时不需要改变I/O口的方向呀,只要把端口配置为开漏输出即可。

使用特权

评论回复
地板
kinso|  楼主 | 2010-10-23 17:15 | 只看该作者
是有意外中断发生.
具体表现为:除pb4,pb5引脚外其他引脚改变状态无意外中断.
   使用pb4,pb5时,I2C总线上不能有数据.无数据时,没有意外中断.

使用特权

评论回复
5
香水城| | 2010-10-23 17:57 | 只看该作者
是有意外中断发生.
具体表现为:除pb4,pb5引脚外其他引脚改变状态无意外中断.
   使用pb4,pb5时,I2C总线上不能有数据.无数据时,没有意外中断.
kinso 发表于 2010-10-23 17:15


发生意外中断是什么时候,你说“无数据时,没有意外中断”,是否可以理解为“有数据时,才有意外中断”?哪个中断?

另:线路上有数据时,怎么能够改变端口状态?你怎么知道这样做不会干扰外部信号?

使用特权

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

本版积分规则

0

主题

16

帖子

1

粉丝