This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我 想在 2秒内计算脉冲数、但 只要按 PF4、代码就不会进入中断处理程序事件。我对 Tiva C 编程是一种新体验。
上图显示了调试模式、在按下 PF4之前位 IME 被置位、但按下后 RIS 和 MIS 将永久显示0x01、如图所示。
当我关闭调试器指针时、指针被放置在故障 ISR 旁边几秒钟。我认为它可能已被永久插入故障 ISR 例程。
如何解决此问题? 我不知道吗?我还尝试更改矢量中断表、但没有结果。
代码如下:
无符号长整型电流时钟捕捉= 0;
无符号长整型电流 ClockCapture1 = 0;//负边沿处的值
无符号长整型 lastClockCapture = 0;
unsigned long time=0;//最后一个负边沿的值
无符号长整型电流 ClockCapture2=0;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
INT 脉冲=0;
//portF1中断处理程序
void PortF1IntHandler (void){
GPIOIntClear (GPIO_PORTD_BASE、GPIO_PIN_4);
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、4);
//SysCtlDelay (3000000);
脉冲+=1;
}
int main (空)
{
SysCtlClockSet (SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
//启用和配置外设
SysCtlDelay(3);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
SysCtlDelay(3);
GPIOPinTypeGPIOInput (GPIO_PORTF_BASE、GPIO_PIN_4);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
GPIOPadConfigSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);
GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_FALLING_EDGE);
GPIOIntRegister (GPIO_PORTF_BASE、PortF1IntHandler);
GPIOIntEnable (GPIO_PORTF_BASE、GPIO_PIN_4);
GPIOIntClear (GPIO_PORTF_BASE、GPIO_PIN_4);
IntMasterEnable();
// IntEnable (INT_GPIOF);//我已经对其进行了注释和取消注释,但仍然没有效果
//EnableInterrupts();//I 已对其进行了注释和取消注释,但仍然没有效果
//SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
// SysCtlDelay (3);
//
//周期= SysCtlClockGet ()/0.5;//100kHz
//ROM_TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICY_UP);// timer0A 配置了16位时间捕获
//rom_TimerLoadSet (TIMER0_BASE、TIMER_Both、PERIODE-1);
//rom_TimerMatchSet (TIMER0_BASE、TIMER_A、0xFFFFFFFE);
//rom_TimerPrescaleSet (TIMER0_BASE、TIMER_A、0xFFFF);
//rom_TimerPrescaleMatchSet (TIMER0_BASE、TIMER_A、0x01);
//IntEnable (INT_TIMER0A);
//TimerIntEnable (TIMER0_BASE、TIMER_TIMA_TIMEOUT);
//IntMasterEnable();
//定时器使能(TIMER0_BASE、TIMER_A);
while (1)
{
////// GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、4);
//currentClockCapture1=ROM_TimerValueGet (TIMER0_BASE、TIMER_A);
//currentClockCapture2=TimerLoadGet (TIMER0_BASE、TIMER_A);
//GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、I);
}
}
空 Timer0IntHandler (空)
{
TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);
if (i=0){
I=4;
}否则{
I=0;
}
脉冲=0;
}
在端口 F 的中断例程中、您传递"GPIO_PORTD_BASE"
GPIOIntClear (GPIO_PORTD_BASE、GPIO_PIN_4);
它应该是"GPIO_PORTF_BASE"
GPIOIntClear (GPIO_PORTF_BASE、GPIO_PIN_4);