我的一个1294的程序中,主程序如下:
int
main(void)
{
//SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480), 120000000);
//************PWM Period Init**********************************//
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_2);//B通道连接引脚
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_2 , ~GPIO_PIN_2);
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);//B通道连接引脚
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4 , GPIO_PIN_4);
CONFIG_UART();
CONFIG_PWM();
while(1)
{
//*************************************************
PWM_Para_Set(Frequency_pwm,PWM_Duty);
//********************************************
}
}
我该怎么计算while循环里面执行一次所需要的时间?
xyz549040622:
我一般是通过反转IO,用逻辑分析仪或者示波器抓波形来实现的。
你也可以试试这个页面提到的CCS的计数功能
processors.wiki.ti.com/…/Watchpoints_for_Stellaris_in_CCS
user5327409:
回复 xyz549040622:
程序中不同语句的执行时间相同吗?就像汇编程序里面什么类型的语句用几个机器周期的那样?
我的while循环里面不止有IO口的输入输出操作,还有其他的一些操作,光靠IO口的执行时间能够判断吗?
Susan Yang:
建议您使用CCS的 Clock Cycle统计功能
您可以看一下之前的讨论贴
e2echina.ti.com/…/10782
xyz549040622:
回复 user5327409:
我觉得这个测量到的时间是最准确的,如果你的程序太多,看汇编指令的多少估算时间,工作量很大,和实际也应该是有误差的。