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.
/**
* main.c
*/
#include <stdint.h>
#include <stdbool.h>
#include "driverlib/sysctl.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "driverlib/timer.h"
#include "driverlib/pin_map.h"
uint32_t ui32SysClkFreq;
#define D2 GPIO_PIN_0
#define D1 GPIO_PIN_1
int Flag=0;
float ulPeriod;
char result;
void Timer1AIntHandler(void){
unsigned long ulstatus;
ulstatus = TimerIntStatus(TIMER1_BASE, TIMER_CAPA_EVENT);
TimerIntClear(TIMER1_BASE, ulstatus);
result=TimerValueGet(TIMER1_BASE, TIMER_A);
if(result==0){
GPIOPinWrite(GPIO_PORTN_BASE, D2|D1, 3);
}
}
void main(void)
{
ui32SysClkFreq=SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480), 120000000);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);//Turn on LED
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, D2|D1);
SysCtlDelay(10);
GPIOPinConfigure(GPIO_PD2_T1CCP0);
GPIOPinTypeTimer(GPIO_PORTD_BASE,GPIO_PIN_2);
GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME_UP);
TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_POS_EDGE);
TimerMatchSet(TIMER1_BASE, TIMER_A, 0x8FFF);
TimerIntRegister(TIMER1_BASE, TIMER_A, Timer1AIntHandler);
IntMasterEnable();
TimerIntEnable(TIMER1_BASE, TIMER_CAPA_MATCH);
IntEnable(INT_TIMER1A);
TimerEnable(TIMER1_BASE, TIMER_A);
while(1){
}
}
void Timer1AIntHandler(void){ unsigned long ulstatus; ulstatus = TimerIntStatus(TIMER1_BASE, TIMER_CAPA_EVENT); TimerIntClear(TIMER1_BASE, ulstatus); result=TimerValueGet(TIMER1_BASE, TIMER_A); if(result==0){ GPIOPinWrite(GPIO_PORTN_BASE, D2|D1, 3); } } void main(void) { ui32SysClkFreq=SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);//Turn on LED GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, D2|D1); SysCtlDelay(10); GPIOPinConfigure(GPIO_PD2_T1CCP0); GPIOPinTypeTimer(GPIO_PORTD_BASE,GPIO_PIN_2); GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME_UP); TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_POS_EDGE); TimerMatchSet(TIMER1_BASE, TIMER_A, 0x8FFF); TimerIntRegister(TIMER1_BASE, TIMER_A, Timer1AIntHandler); IntMasterEnable(); TimerIntEnable(TIMER1_BASE, TIMER_CAPA_MATCH); IntEnable(INT_TIMER1A); TimerEnable(TIMER1_BASE, TIMER_A); while(1){ } }
这两行操作的中断标志是不一样的吧。进入FaultISR(void)函数,首先怀疑是硬件配置的问题。