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.

[参考译文] MSP430FR50431:实现 Millis ()函数

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1030645/msp430fr50431-implementing-millis-function

器件型号:MSP430FR50431

大家好、

我正在尝试从 Arduino 中实现 Millis()函数。 它所做的是、自程序启动并返回以来、它计数的毫秒数。  

到目前为止、我有一个计时器 A3、它来自向上计数模式中的 SMCLK: Gist。 (由于某种原因、我无法直接在此处插入代码)。

问题是,出于某种原因,在发出5-6条 UART 消息后,程序将停止,并且不会向 UART 发送其他 Millis ()更新。  

我不知道、如果这是 UART 问题、或者它与毫秒实现有关。 但我在最后两天的时间里、按照在线教程进行了研究、没有什么帮助。 显然、我需要第二双眼睛。

请您仔细 查看代码并指出某些器件、这可能是错误的吗? 提前感谢您。

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

    您的毫秒变量是什么类型?

    我假设您具有易失性。

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

    是的、它是易失的、在链接的 gist 的第一行上定义。

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

    1) 1)这

    EUSCI_A_UART_enableInterrupt (EUSCI_A2_base、EUSCI_A_UART_Transmit _Complete_interrupt);//空

    启用 UCTXCPTIE、但我看不到 ISR、因此一旦你获得 UCTXCPTIFG、你就会在 ISR_TRAP 中结束。 只需删除此行。 (考虑到 Erratum USCI42、你跑得像你一样长、我有点惊讶。)

    2) 2)我看不到 UART_WRITE。 我确实会看到名为 ss_uart_write 的内容。

    3) 3)检查堆栈大小- CCS 的默认值通常很小。 sprintf 使用的堆栈可能为200字节、同时还有 texty[200]。

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

    AD1)是的、这是启用中断的线路。 我以前在这里有一个 ISR、只是为了在 UART_write()中设置 UART_BUSY 标志、但后来我决定宁愿等待  UCTXCPTIFG 标志。 非常感谢!

    AD2) ss_uart_write()应该被命名为 uart_write(),它只是我复制和编辑出版物代码的一个继电器。

    AD3)根据 这个线程、堆栈大小不应受到限制(除了总堆栈大小)。 因此、我必须检查当前堆栈指针并将其与堆栈端进行比较、以确保我的程序不会耗尽内存?  

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

    3)通过"检查"、我的意思是转到"Build Settings->Build->Linker->Basic->Set C Stack Size"、看看该值是否甚至模糊合理。 我将(200+200)作为可能的估计值;或者、只需将200 (用于文本[])添加到其中的任何内容。

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

    谢谢、它设置为160。 我将增大它。