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:获取时间(以毫秒为单位)或配置系统tick

Guru**** 2605755 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/640469/ccs-msp432p401r-get-time-in-milliseconds-or-configure-system-ticks

部件号:MSP432P401R

工具/软件:Code Composer Studio

您好,

我目前正在使用MSP432上的应用程序,并且正在使用bootxlsensor项目通过UART传输传感器数据。

标准C标头允许我获取当前时间,但分辨率仅为1秒... 我希望以毫秒为单位。 例如,Arduino具有易于实施的millis ()函数,但我尚未在CCS中看到简单的解决方案。 我已经浏览了计时器示例,但无法找到配置刻度分辨率或自程序启动以来输出刻度数的方法。

如果有人能给我一个详细的回答,那将是非常有帮助的,非常感谢!

最佳,
Farib

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

    驱动程序库
    此示例连续计数,并为可能的溢出计数提供中断。 每个计数为1/3.2768万,但您可以更改来源以获得所需的分辨率。 为了获得时间,可以使用driverLib API,Timer_a_getCounterValue()和该值来确定时间所发生的溢出数。

    dev.ti.com/.../

    有关getCounterValue API的说明可在此处找到:
    dev.ti.com/.../

    对于TI-RTOS内核,您应该查看第129页上描述的计时服务:
    dev.ti.com/.../

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

    请尝试以下操作:

    它使用driverlib()

    从0.5秒到0.001秒的变化取决于时钟频率。

    	
    /*
    --------------------------------------------
    * MSP432驱动程序库- v3_21_00_05
    *----------------------------------
    *
    **-版权所有-,BSD,BSD
    *版权所有(c) 2016,Texas Instruments Incorporated
    *保留所有权利。
    *
    **
    允许以源代码和二进制格式重新发布和使用,无论是否进行*修改,只要
    满足以下条件*:
    *
    ****重新发布源代码必须保留上述版权
    *声明,此条件列表和以下免责声明。
    *
    ***以二进制格式重新分发时,必须在
    
    随分发提供的*文档和/或其他材料中复制上述版权*声明,此条件列表和以下免责声明。
    *
    ***
    
    未经事先书面许可,不得使用德州仪器(TI)公司的名称或*其贡献者的名称来支持或促销由本软件衍生的产品*。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *,
    
    不提供任何明示或暗示的担保,包括但不限于*对适销性和特定*用途适用性的暗示担保。 在任何情况下,版权所有者或
    *贡献者均不对任何直接,间接,附带,特殊,
    *示范, 或后果性损害(包括但不限于
    *购买替代商品或服务;使用,数据或利润损失;
    (*或业务中断),但根据任何责任理论
    ,*无论是合同,严格责任还是侵权行为(包括疏忽或
    *其他),均因使用本软件而导致*
    ,即使已被告知此类损害的可能性。
    -/copyright--*//*******************************************************************************************************
    
    * MSP432 Systick -闪烁LED程序
    *
    说明:此程序将使用Systick模块使LED闪烁
    *一秒钟。 设置后,应用程序将进入LPM3
    *模式,并且仅唤醒以切换GPIO引脚。
    *
    **此程序无限运行,直到用户手动停止。
    *
    ** MSP432P401
    * -----------
    * /|\\| |
    * || |
    * --|RST WFP 1.0 |-->WFP 1.0 LED
    * | |
    * | |
    * | |
    * | |
    * | |
    *
    *作者:Timothy Logan
    ******************************************************************************* /*
    DriverLib包括*/
    #include "driverlib.h"
    
    /*标准包括*/
    #include <stdint.h>
    
    #include <stdbool.h>UINT32_t
    
    millis (void);
    
    volatile UINT32_t Tick;
    
    int main(void){
    
    /*停止监视程序*/
    MAP_WDT_A_HoldTimer();
    
    /*将GPIO配置为输出*/
    MAP_GPIO_setAsOutputPin (GPIO端口P1,GPIO _PIN0);
    
    /*配置Systick在150万时触发(MCLK为3MHz,因此这将产生
    *每隔0.5秒切换一次)*/
    MAP_Systick_enableModule();
    MAP_Systick_setPeriod (150万);
    MAP_Interrupt_enableSleepOnIsrExit();
    MAP_Systick_enableInterrupe();
    
    /*启用主中断*/
    MAP_Interrupt_enableMaster();
    
    同时(1)
    {
    MAP_PCM_GotoLPM0();
    }
    }
    
    作废Systick_Handler(void){
    
    MAP_GPIO_toggleOutputOnPin (GPIO端口P1,GPIO _PIN0);
    tick+;
    }
    
    UINT32_t millis (void){返回Tick;} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Keith,我尝试了这个代码,但由于某种原因,millis总是返回0。 是否有办法将其用作延迟? 我正在发送一些命令,需要在收到一些响应或超时时时时完成功能。 我正在使用中断来获得响应。

    此致,
    Alix