本帖最后由 stardust2018 于 2019-5-4 15:14 编辑
买了一块 STC8A8K64S4A12 开发板,测试外部中断,感觉是不是芯片有些问题?
如图,图片左边是串口输出信息,按理来说 输出应该是 0 和 1 交替输出,
连续输出 1 或者 0 都是不对的,但是实际测试就是有连续输出1,有时候连续输出0,为什么会这样呢?
我是用一个按键测试外部中断1,引脚默认是高电平,
按键按下,把引脚拉低,应该触发下降沿,应该输出 0;
松开按键,引脚恢复高电平,应该触发上升沿,应该输出 1;
代码如下:
void INT1_Init(void)
{
IE1 = 0; //将INT1中断请求标志位清"0"
EX1 = 1; //使能INT1中断允许位
IT1 = 0; //选择INT1为上升沿或下降沿触发方式
}
/**************************************
功能描述:外部中断服务程序
入口参数:无
返回值:无
***************************************/
void INT1_int (void) interrupt 2
{
if (1 == KEY) // 上升沿
{
RED_LED = 1;
Uart1_Send_String("1");
}
else // 下降沿
{
RED_LED = 0;
Uart1_Send_String("0");
}
}
再补充一些信息:在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象,
不接负载就基本没什么问题,我在想是不是电路板中有大电流,或者芯片中的电流过大造成芯片不正常了
这个问题我已经在软件层面做了处理,保证业务逻辑正常。
现在只是好奇为什么硬件会出现这种情况,看看有没有哪位大侠知道原因。
|