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.

[参考译文] CCS/MSP432P401R:CCS/MSP432P401R

Guru**** 2204280 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/741732/ccs-msp432p401r-ccs-msp432p401r

器件型号:MSP432P401R

工具/软件:Code Composer Studio

我正在尝试调试我的代码。  

我有几个与主代码相关的源文件。

以下代码是我的主代码。

我想逐行调试源文件、而不是主代码。

上周五、当我在代码中设置断点时、我可以跳转到源文件、但它现在不起作用。

我认为我没有改变任何东西、只是设置一个断点来逐行检查。  

如果我使用单步执行进行调试、它会以红色字母在 while 循环处停止。

请就此向我提供建议。

#include "msp.h"

#include "driverlib.h"

#include

#include

#include

#include

#include

#include

#include "globals.h"

#include "initiations.h"

#include "peripheralFunctions.h"

#include "utilityFunctions.h"

void main (void)

  WDT_A_HOLDTimer();        //停止看门狗计时器

  map_fpu_enableModule();

  MAP_Interrupt_disableMaster();

  init_clocks();

  init_pines();

  init_uart();

  init_spi();

  init_adc();

  init_capte();

  init_timers();

  MAP_Interrupt_enableSlepOnIsrExit();

  MAP_Interrupt_setPriority (INT_TA3_0、0);     // UART 消息传输具有最高优先级

  MAP_Interrupt_setPriority (INT_TA0_N、1);     //第一个磁性编码器脉冲读数

  MAP_Interrupt_setPriority (INT_TA1_N、2);     //二次和三次磁性编码器脉冲读数

  MAP_Interrupt_setPriority (INT_PORT6、3);     // ISR 以启动 Timer A 计数器

  MAP_Interrupt_enableMaster();

  //启动计数器/ISR (在 P1 ISR 中完成)

  //map_Timer_a_startCounter (timer_A0_BASE、timer_A_up_mode);

  //map_Timer_a_startCounter (timer_A1_base、timer_A_up_mode);

  //map_Timer_a_startCounter (timer_A3_base、timer_A_up_mode);

  while (1){

    MAP_PCM_gotoLPM0 ();

  }

//在第一个 MSP 上完成归零后启用外设的 ISR、P1.5 设置为高电平

void PORT6_IRQHandler (void)

  //printf ("完成归零");

  uint32_t status;

  STATUS = MAP_GPIO_getEnabledInterruptStatus (GPIO_PORT_P6);

  MAP_GPIO_clearInterruptFlag (GPIO_PORT_P6、状态);

  //启动计数器/ISR

  MAP_Timer_A_startCounter (TIMER_A0_BASE、TIMER_A_UP_MODE);

  MAP_Timer_A_startCounter (timer_A1_base、timer_A_up_mode);

  MAP_Timer_A_startCounter (TIMER_A3_base、TIMER_A_UP_MODE);

  MAP_Interrupt_disableInterrupt (INT_PORT6);

//使计时器在第一个磁性编码器的上升沿和下降沿之间获得时钟差

void TA0_N_IRQHandler (void)

  //printf ("\nTA0_N ISR\n");

  if (timer_A0->CCTL[1]& 1 = 1){

    MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A0_BASE、TIMER_A_CAPTURECMPARE 寄存器_1);

    RISE_COUNT[0]= MAP_Timer_A_getCaptureCompareCount (TIMER_A0_BASE、TIMER_A_CAPTURECOMPARE 寄存器_1);

  }

  if (timer_A0->CCTL[2]& 1 = 1){

    MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A0_BASE、TIMER_A_CAPTURECOMPARE 寄存器_2);

    FRAME_COUNT[0]= MAP_Timer_A_getCaptureCompareCount (timer_A0_BASE、timer_A_CAPTURECOMPARE 寄存器_2);

  }

  PULSE_LENGTH[0]= FRAGE_COUNT[0]- RISE_COUNT[0];

  if (***[0]< 0){

    PULSE_LENGTH[0]+= 4061;

  }

//使计时器获得第二个两个磁性编码器的上升沿和下降沿之间的时钟差

void TA1_N_IRQHandler (void)

  //printf ("\nTA1 ISR\n");

  if (timer_A1->CCTL[1]& 1 = 1){

    MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A1_base、TIMER_A_CAPTURECOMPARE 寄存器_1);

    RISE_COUNT[1]= MAP_Timer_A_getCaptureCompareCount (timer_A1_base、timer_A_CAPTURECMPARE 寄存器_1);

  }

  if (timer_A1->CCTL[2]& 1 = 1){

    MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A1_base、TIMER_A_CAPTURECOMPARE 寄存器_2);

    FRAME_COUNT[1]= MAP_Timer_A_getCaptureCompareCount (timer_A1_base、timer_A_CAPTURECOMPARE 寄存器_2);

  }

  if (timer_A1->CCTL[3]& 1 = 1){

    MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A1_base、TIMER_A_CAPTUREAPMPARE 寄存器_3);

    RISE_COUNT[2]= MAP_Timer_A_getCaptureCompareCount (timer_A1_base、timer_A_CAPTURECMPARE 寄存器_3);

  }

  if (timer_A1->CCTL[4]& 1 = 1){

    MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A1_base、TIMER_A_CAPTURECOMPARE 寄存器_4);

    FRAME_COUNT[2]= MAP_Timer_A_getCaptureCompareCount (timer_A1_base、timer_A_CAPTURECOMPARE 寄存器_4);

  }

  PULSE_LENGTH[1]= FRAW_COUNT[1]- RISE_COUNT[1];

  if (***[1]< 0){

    PULSE_LENGTH[1]+= 4061;

  }

  PULSE_LENGTH[2]= FLOW_COUNT[2]- RISE_COUNT[2];

  if (***[2])< 0){

    PULSE_LENGTH[2]+= 4061;

  }

// ISR 获取接合角、速度、电机电流和 FSR 力、然后通过 UART 进行传输

void TA3_0_IRQHandler (void){

  //printf ("\nTA3 ISR\n");

  MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A3_base、TIMER_A_CAPTURECOMPARE 寄存器_0);

  MAP_ADC14_toggleConversionTrigger ();     //触发 ADC 转换

  //delay_ms (100);     //延迟以允许 ADC 转换的时间

  Read_SPI();

  read_capture ();

  read_adc();

  int ii;

  对于(ii = 0;ii < 6;i++){

    WRITE_UART (q_s[i]);

  }

  对于(ii = 0;ii < 6;i++){

    WRITE_UART (QD_s[i]);

  }

  对于(ii = 0;ii < 3;i++){

    WRITE_UART (I_s[i]);

  }

  对于(ii = 0;ii < 4;i++){

    WRITE_UART (F_s[i]);

  }

  MAP_UART_transmitData (EUSCI_A0_BASE、CRAY_RETURN);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    看起来不错。
    它应该是 lpm0、但调试会话需要一些例外。
    如果您按下暂停按钮、它何时停止?
    尝试进入、运行并再次暂停。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yongmin、
    只需与您联系、查看您是否仍有此问题。 一

    谢谢
    Ki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我没有听到您的反馈,因此这个问题已经解决了。 如果您希望继续讨论、请在下面发布包含更新的回复(或创建新主题帖)。

    谢谢、
    Ki