Tool/software: Code Composer Studio
I just got a new MSP432401R launchpad. It asked to update the XDS110 the first time I programmed it, so I assume that it is up to date.
I can re-program the gpio_toggle_output example just fine. But when I run the timer_32periodic_mode_led_toggle example (code below), it programs fine the first time, but any subsequent re-programs give me the following error:
CS_DAP_0: Error connecting to the target: (Error -614 @ 0x0) The target indicates there is an error condition from a previous SWD request.
Clear the error the condition, and try the SWD request again. (Emulation package 7.0.188.0)
And I can only cancel. Once I pull the USB and put it back in, everything is fine.
I thought it might be the fact that it is in LPM0 mode, so I commented that out of the while loop, but still had the same problem. Any thoughts?
/*******************************************************************************
* MSP432 Timer32 - Periodic LED Blink
*
* Description: Starts timer on a button press, toggles GPIO/LED for
* a timer period, and then turns off LED at end of period.
*
* MSP432P401
* ------------------
* /|\| |
* | | |
* --|RST P1.1 |<--- Switch
* | |
* | |
* | P1.0 |---> LED
* | |
* | |
*
*******************************************************************************/
/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>
int main(void)
{
/* Halting the Watchdog */
MAP_WDT_A_holdTimer();
/* Setting MCLK to REFO at 128Khz for LF mode */
MAP_CS_setReferenceOscillatorFrequency(CS_REFO_128KHZ);
MAP_CS_initClockSignal(CS_MCLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);
MAP_PCM_setPowerState(PCM_AM_LF_VCORE0);
/* Configuring GPIO */
MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);
MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
/* Configuring Timer32 to 128000 (1s) of MCLK in periodic mode */
MAP_Timer32_initModule(TIMER32_BASE, TIMER32_PRESCALER_1, TIMER32_32BIT,
TIMER32_PERIODIC_MODE);
/* Enabling interrupts */
MAP_Interrupt_enableInterrupt(INT_PORT1);
MAP_Interrupt_enableInterrupt(INT_T32_INT1);
MAP_Interrupt_enableMaster();
/* Sleeping when not in use */
while (1)
{
MAP_PCM_gotoLPM0();
}
}
/* GPIO ISR */
void PORT1_IRQHandler(void)
{
uint32_t status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1,status);
if (GPIO_PIN1 & status)
{
MAP_GPIO_disableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
MAP_GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_Timer32_setCount(TIMER32_BASE,64000);
MAP_Timer32_enableInterrupt(TIMER32_BASE);
MAP_Timer32_startTimer(TIMER32_BASE, true);
}
}
/* Timer32 ISR */
void T32_INT1_IRQHandler(void)
{
MAP_Timer32_clearInterruptFlag(TIMER32_BASE);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
}
/******************************************************************************* * MSP432 GPIO - Toggle Output High/Low * * Description: In this very simple example, the LED on P1.0 is configured as * an output using DriverLib's GPIO APIs. An infinite loop is then started * which will continuously toggle the GPIO and effectively blink the LED. * * MSP432P401 * ------------------ * /|\| | * | | | * --|RST P1.0 |---> P1.0 LED * | | * | | * | | * | | * ******************************************************************************/ /* DriverLib Includes */ #include <ti/devices/msp432p4xx/driverlib/driverlib.h> /* Standard Includes */ #include <stdint.h> #include <stdbool.h> //![Simple GPIO Config] int main(void) { volatile uint32_t ii; /* Halting the Watchdog */ MAP_WDT_A_holdTimer(); /* Configuring P1.0 as output */ MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0); while (1) { /* Delay Loop */ for(ii=0;ii<50000;ii++) { } MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0); } } //![Simple GPIO Config]