我用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变慢了,导致了波特率不准确了
|