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.

[参考译文] TM4C123GH6PM:时钟工作速度快4倍

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1063575/tm4c123gh6pm-clock-works-4-times-faster

器件型号:TM4C123GH6PM

您好!

我在控制时钟速度时遇到问题。 时钟的工作速度比我希望的快4倍。 例如、在下面的代码中、我希望 LED 亮起1秒、然后熄灭1秒、但它会在第二秒中亮起和熄灭两次。 时钟速度为16MHz、我已经使用了 SYSCTL_SYSDIV_64、因此 应该将时钟速度降低到250kHz;所以如果我说 SysCtlDelay (250000)、我不应该得到1秒、因为每秒有250000个特性? 我在使用 PWM 和其他功能时面临同样的问题。 感谢您的帮助和提前感谢。

int main (空)

SysCtlClockSet (SYSCTL_SYSDIV_64|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

HWREG (GPIO_PORTF_BASE + GPIO_LOCK)= GPIO_LOCK_KEY;
HWREG (GPIO_PORTF_BASE + GPIO_CR)|= 0x01;
HWREG (GPIO_PORTF_BASE + GPIO_O_LOCK)= 0;

GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_1);

while (1)

//打开 LED
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_1、0xFF);
//延迟一位
SysCtlDelay (250000);

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_1、0x00);
//延迟一位
SysCtlDelay (250000);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="496955" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1063575/tm4c123gh6pm-clock-works-4-times-faster ]时钟速度为16MHz、我使用了 SYSCTL_SYSDIV_64、因此 应将时钟速度降至250kHz [/quot]

     SYSCTL_USE_PLL 选项意味着16MHz 晶体用于在400MHz 下操作 PLL、其中 PLL 的输出被分频以设置 系统时钟频率。 PLL 输出有一个固定的二分频、然后被 SYSCTL_SYSDIV_64进一步分频、从而产生一个3.125MHz 的系统时钟频率。

    SysCtlClockGet()函数可被用来获得已经被设定的频率。 以下结果导致 clock_freq = 3125000:

        SysCtlClockSet(SYSCTL_SYSDIV_64|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
    
        volatile uint32_t clock_freq = SysCtlClockGet ();
    
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);