工具/软件:Code Composer Studio
大家好:
我需要我来获取程序的确切时间。所以在CCS调试中使用计数时钟周期的方法。 我对1000个时钟周期使用__DELAY周期()精确延迟程序。
然后读取count的值以查看其是否匹配。程序的断点和CCS调试断点计数的设置如下图所示。
运行程序后,程序的两个测量断点之间的时钟周期不是1000,而是2987。如下图所示
这是我的疑问,我准确延迟了1000个时钟周期,为什么CCS断点计数计算时钟周期是2987?
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.
工具/软件:Code Composer Studio
大家好:
我需要我来获取程序的确切时间。所以在CCS调试中使用计数时钟周期的方法。 我对1000个时钟周期使用__DELAY周期()精确延迟程序。
然后读取count的值以查看其是否匹配。程序的断点和CCS调试断点计数的设置如下图所示。
运行程序后,程序的两个测量断点之间的时钟周期不是1000,而是2987。如下图所示
这是我的疑问,我准确延迟了1000个时钟周期,为什么CCS断点计数计算时钟周期是2987?
Alex824,
您可以尝试以下代码吗?
/* DriverLib包括*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/*
Standard包括*/
#include <stdint.h>
#include <stdbool.h>
int main(void){
/*停止监视*/
MAP_WDT_A_HoldTimer();
Int MCLK;
同时(1)
{
__DELAY周期(1000);
MCLK = CS_getMCLK();
}
}
我在__delay_cycles(1000)处设置了断点;在MCLK = CS_getMCLK()处设置了断点;执行了计数事件,在运行时设置重置计数。 已运行至__delay_cycles(1000);再次运行,并收到以下计数。
如果这确实有效,请告诉我。
非常感谢您的回复。
1.我尝试了三个程序,第一个程序与您的程序完全相同。 结果与您相同,延迟1000个时钟周期,计数也为999。
2. 在第二个项目中,我使用DCO,将MCLK提高到48M。 1000个时钟周期后,计数为1996。程序和结果如下所示。
/* DriverLib包括*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/*
Standard包括*/
#include <stdint.h>
#include <stdbool.h>
int main(void){
Int MCLK;
/*停止监视*/
MAP_WDT_A_HoldTimer();
MAP_Interrupt_DisableMaster();
//![简单FPU配置]
//为DCO频率计算启用FPU
MAP_FPU_enableModule();
MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
MAP_FlashCTL_setWaitState(FLASH_BANK0, 2);
MAP_FlashCTL_setWaitState(FLASH_Bank1,2);
//将DCO频率设置为标准48MHz
//初始化时钟系统
MAP_CS_setDCOCenteredFrequency (CS_DCO_Frequency_48);
MAP_CS_INITClockSignal (CS_MCLK, CS_DCOCLK_SELECT, CS_CLOCK分隔符_1);
同时(1)
{
__DELAY周期(1000);
MCLK = CS_getMCLK();
}
}
3.在第三个程序中,我添加了SMCLK,1000个时钟周期后的计数是2987。程序和结果如下
/* DriverLib包括*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>/*
Standard包括*/
#include <stdint.h>
#include <stdbool.h>
int main(void){
Int MCLK;
/*停止监视*/
MAP_WDT_A_HoldTimer();
MAP_Interrupt_DisableMaster();
//![简单FPU配置]
//为DCO频率计算启用FPU
MAP_FPU_enableModule();
MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
MAP_FlashCTL_setWaitState(FLASH_BANK0, 2);
MAP_FlashCTL_setWaitState(FLASH_Bank1,2);
//将DCO频率设置为标准48MHz
//初始化时钟系统
MAP_CS_setDCOCenteredFrequency (CS_DCO_Frequency_48);
MAP_CS_INITClockSignal (CS_MCLK, CS_DCOCLK_SELECT, CS_CLOCK分隔符_1);
MAP_CS_INITClockSignal (CS_SMCLK,CS_DCOCLK_SELECT,CS_CLock_DICROLOR_2);
同时(1)
{
__DELAY周期(1000);
MCLK = CS_getMCLK();
}
}