/******************
以下都来自论坛里面的回复摘录
*******************/
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
例如这里是16MHz外部晶振。PLL会被倍频到200MHz,因此4分频后频率为50MHz
TM4C123x系列最高主频为80MHz
200除以2.5就是80MHz嘛:
SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
使用ROM_SysCtlClockGet函数可以读取回来当前的时钟频率。
一直得到66.66MHZ的问题
目前最新版的TivaWare中SysCtlClockGet 这个函数有点问题。
采用ROM_SysCtlClockGet 来获取时钟吧。读回来就是80MHz了。
xyz549040622:
自己给自己支持下!
xyz549040622:
回复 xyz549040622:
一个模块没有使能的时候去操作它的寄存器一定会导致进入硬件错误中断的。
您说的M3中没遇到,我想可能是因为程序的其它地方已经默认启动了这个外设。或者是这个外设在复位后默认为使能的。
TM4C129x属于SnowFlake系列,它的时钟主频获取不可以采用SysCtlGetClock函数,这个是给Blizzard(TM4C123x)系列处理器使用的。
// // Set the clocking to run directly from the crystal at 120MHz. // g_ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000);
这个函数的返回值g_ui32SysClock 就是读取到的系统时钟。
songbp ruan:
我还一直纳闷这个问题呢,直好一直用50MHz。再请教您一个问题,使用最新版的tivaware中的PWMGenPeriodSet和SysCtlDelay是不是都会有问题呢?我感觉现在用起来都是乱的。。。。。。。。。。。。。
xyz549040622:
回复 songbp ruan:
最新版的tivaware中的PWMGenPeriodSet和SysCtlDelay应该是没有问题的,我觉得是你没有恰当的设置造成的。上你的配置参数看看.