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.

[参考译文] Compiler/TM4C123GH6PGE:SysTickPeriodSet()函数问题

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/648482/compiler-tm4c123gh6pge-systickperiodset-function-question

器件型号:TM4C123GH6PGE

工具/软件:TI C/C++编译器

问题> 100Hz 中断如何计算 SysTick?

内容如下。  

#define tICKS_PER_second 100

//将系统时钟设置为从 PLL 以50MHz 运行。
//
ROM_SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);

//为100Hz 中断配置 SysTick。
//
ROM_SysTickPeriodSet (ROM_SysCtlClockGet ()/ ticks_per_sond);
ROM_SysTickEnable();
ROM_SysTickIntEnable();

(请参阅 SW-TM4C-DRL-UF-G1-2.1.4.178文件)

28.2.2.8 SysTickPeriodSet
设置 SysTick 计数器的周期。


原型:
无效
SysTickPeriodSet (uint32_t ui32Period)
参数:
ui32Period 是 SysTick 计数器每个周期内的时钟节拍数、必须为
介于1和16之间、777、216、包括16。


描述:
此函数设置 SysTick 计数器回绕的速率、相当于该数字
中断之间的处理器时钟数量。


注:
调用此函数不会导致 SysTick 计数器立即重新加载。 如果是立即数
需要重新加载、必须写入 NVIC_ST_CURRENT 寄存器。 对该寄存器的任何写入
将 SysTick 计数器清零并使用上提供的 ui32Period 引起重新加载
启用 SysTick 后的下一个时钟。


返回:
无。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jame、您好!
    ROM_SysTickPeriodSet (ROM_SysCtlClockGet ()/ ticks_per_sond)正确生成100Hz 的节拍。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     你(们)好,查尔斯


    如何为100Hz 中断的配置 SysTick 计算100Hz?

    Ex> 50000000 / 100 = 500000Hz

     

    此致。

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

    你(们)好,查尔斯

    如何为100Hz 中断的配置 SysTick 计算100Hz?

    Ex> 50000000 / 100 = 500000Hz  

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不、这不是正确的理解。 您将执行 ROM_SysTickPeriodSet(500000)以生成一个节拍。 500000是在生成 SysTick 中断之前要计数的时钟周期数。 计数50000个周期需要0.01s。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好,查尔斯

    谢谢你

    计算)系统时钟50MHz,T=20ns,
    20ns * 500、000 = 0.01s
    中断每0.01秒(100Hz)发生一次


    此致

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