打印
[STM8]

STM8外部中断冲突问题

[复制链接]
1238|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangwei198996|  楼主 | 2014-6-26 17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用STM8调试的时候发现同一组的IO口 会影响其外部中断口的程序
部分代码如下

#define COM_TX_CHECK     GPIOC,GPIO_PIN_2  
#define COM_TX_REVERSE   GPIOC,GPIO_PIN_4
#define IO_LED_A   GPIOC,GPIO_PIN_7


//串口发送脚和COM_TX_CHECK接一起   并从COM_TX_REVERSE口反向输出(即芯片的UART TX脚通过另外一个IO反向输出数据)
//设计需要  只要串口的反转数据,COM_TX_REVERSE脚直接接其他设备串口的接收
INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
{
    if(GPIO_ReadInputPin(COM_TX_CHECK) == RESET)
    {
       GPIO_WriteHigh(COM_TX_REVERSE);
    }
    else
    {
       GPIO_WriteLow(COM_TX_REVERSE);
    }
}

在主程序里一直将PC7拉高(其实是一个LED灯)
GPIO_WriteHigh(IO_LED_A);

然后我发现每隔1s发送10个字节AA时候   平均10帧就有1帧是错误的(比如其中一个字节变成0x55)

不知道是怎么回事,屏蔽掉GPIO_WriteHigh(IO_LED_A);就没事了

感觉像是进入到中断有几个BIT变慢了,导致了波特率不准确了

沙发
huangwei198996|  楼主 | 2014-6-30 08:45 | 只看该作者
没人知道吗

使用特权

评论回复
板凳
金融小数| | 2014-6-30 11:07 | 只看该作者
应该是你在主程序中,执行GPIO_WriteHigh(IO_LED_A);时,整个操作还未结束,就产生中断了,中断中C口的数据发生改变,中断执行结束返回主程序后,你的程序有改变了C口的数据。

你在执行GPIO_WriteHigh(IO_LED_A);前关中断,执行结束后开中断,就没有此现象。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝