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.

[参考译文] CCS/MSP432P401R:在 MSP432P401R 上重新计算时间

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/946839/ccs-msp432p401r-recoding-time-on-msp432p401r

器件型号:MSP432P401R

工具/软件:Code Composer Studio

尊敬的所有人:

我注意到,在启动 SysTick 后,当我们实施 SysTick _GetValue()时,它将返回计数值而不是时间值。 我现在正在尝试找到一种方法将计数值转换为时间值、因为我的团队的设计要求时钟运行36MHz、这意味着时钟每27.78ns 计时一次。 假设我创建一个名为 count 的整数、然后每次时钟节拍时、该计数都会增加1。 例如、当时钟周期为300次(相当于8.334us)时、我的计数值将变为300?  我还想使用 GPIO 作为输入、每次输入为高电平时、我都可以将当前计数值附加到空矢量中。 然后在2.65ms (计数= 95392)后、输入将被禁用、无论输入是否为高电平、整个操作都将被关闭。

现在、我只大致了解了如何执行该操作:
/*代码开始*/

int 计数= 0;

int main (void){

MAP_WDT_A_HOLDTimer();

MAP_GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P1、GPIO_PIN1);

MAP_GPIO_interruptEdgeSelect (PIO_PORT_P1、GPIO_PIN1、GPIO_HIGH_TO_LOW_TRANSITION);

MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、GPIO_PIN1);

map_fpu_enableModule();

MAP_CS_setDCOFrequency (36000000);

MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
MAP_FlashCtl_setWaitState (FLASH_BANK0、1);
MAP_FlashCtl_setWaitState (FLASH_BANK1、1);

MAP_SysTK_enableModule();
MAP_SysTK_setPeriod (1);
MAP_SysTK_enableInterrupt ();

MAP_Interrupt_enableMaster();

while (计数<=95392)

if (/*PIN1.1 high*/)

/*array 追加当前计数值*/


void SysTick 处理程序(void){

count++;

这是一种好方法吗? 我不想只是在板上尝试它、因为我在高频运行时钟时犯了很多错误、MCU 就被骗了、我不得不另外购买一个。

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

    您好、Keith、

    您好像在对 SYS_TICK 进行计数的右侧。  

    如果您建议使用计数值来控制何时更新数组将不起作用。

    您能看到问题吗?  在 while ()循环中,如果 P1.1变为高电平,则记录 sys_tick 值。  只要 P1.1保持高电平、您就会不断将 sys_tick 值附加到数组中。  我假设您只想将 SYS_TICK 值记录为 P1.1从0到>1的转换。  在这种情况下、使用一个标志来指示何时适合写入数组。 例如:

    bool 标志= false;

    while ()

    if ((P1IN & BIT1)&&(flag == false))

         写入 sys_tick;
         flag = true;

    否则(!(P1IN 和 BIT1))
        flag = false;

    不确定为什么/如何"砖型" MCU?

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

    它在这个线程上:

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

    尊敬的 Keith Xia:

    我在另一个帖子(感谢 Keith Barkley)中看到、您使用的器件可能是预制样片、您看到了如下消息:

    "不再支持您的 XMS432P401R 材料。 我们建议您改用生产质量高的 MSP432P401R/M 器件"

    如果您确实有 XMS 版本、您很可能会"欺骗"它。

    您应该使用更新的 LaunchPad、该 LaunchPad 将经过工厂测试并通过硅测试。  如果您有任何问题、请告诉我。

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

    美国 Keiths 必须坚持在一起。 ^μ A)

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

    很酷-数字中有电源;)

    Keith Xia、

    我假设这可以解决您的问题、您可以继续进行您的项目。
    如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

    再次感谢 Keith B -非常感谢您的帮助。