您好:
在使用TI 官方的EVMK2H的开发板(VER4,66AK2H14),把GPIO8配置成输入,上升沿和下降沿都触发, 中断的周期不按预期触发。
但是如果把GPIO8 配置成输出,然后在定时器周期中断服务函数中切换GPIO8的输出寄存器,这时GPIO8的中断周期按预期触发、
实验步骤:
1.关闭所有中断使能
2.配置好GPIO8的输入输出,中断沿的设置,使能GPIO Z中断
3.直接把82 GPIO_INT8 Local GPIO interrupt 映射到CPU INT4,
4.配置TIMER 寄存器及相关中断,直接映射到CPU INT12.
5.使能所有的相关中断寄存器期.
6.1:如果把GPIO8 配置成输出,在Timer ISR 中切换GPIO8 的状态,GPIO ISR 触发周期正常。
用示波器观察120Pin 接口的Pin78(SOC_GPIO_08),波形符合预期。
6.2:如果把GPIO8 配置成输入,失效掉Timer ISR 中切换GPIO8的程序,原则上不应该有中断发生,
GPIO8 没有外部输入源,下拉到地,用示波器观察120Pin 接口的Pin78(SOC_GPIO_08),没有波形,
奇怪的是GPIO8 ISR 不停的在触发,也没有什么周期可言。
也试过其他GPIO9/10,当配置成输入时,同样的情况发生。
6.3:通过120 PIN Expending Header 外接GPIO8输入源(FPGA 产生中期信号),也是同样的情况发生。
确定过GPIO8 的PIN没有搞错,在main函数中while(1){ readGPIO8 IN_DATA,set it to GPIO12(DBG RED LED),示波器显示波形和输入同步。
7.实在是没办法了,就使用官方提供的K2_STK_DSP_v1.1/GPIO 的例子,使用的Combine Interrupt,我自己的直接把GPIO8映射到DSP INT4,把MCSDK 改成ProcesserSDK,只combine GPIO8 interrupt,去掉GPIO9/10/11/12 防止干扰分析问题,把x#define GPIO_LOOP_BACK_TEST 1 改成 #define GPIO_LOOP_BACK_TEST 0 把GPIO设为输入,情况也是一样。
已经调试2 天了,实在想不到哪里出错,请大家帮帮忙,感谢!
等会去公司上传代码。
硬件及软件版本如下:
DSP Core0 的裸机程序
EVMK2E VER 4 开发板
CCS7.3 + 8.1 Compiler
PROCESSER-SDK-RTOS-K2HK v4.01