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/MSP430FR5994:设置时钟时 CIO 命令无效

Guru**** 2604225 points
Other Parts Discussed in Thread: MSPDRIVERLIB

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/652815/ccs-msp430fr5994-invalid-cio-command-when-setting-clock

器件型号:MSP430FR5994
主题中讨论的其他器件:MSPDRIVERLIB

工具/软件:Code Composer Studio

当我使用附加的代码设置时钟时、我获得以下输出(如预期的那样)。

正在配置时钟...  
正在验证时钟...  
MCLK_Frequency:8000000  
SMCLK_Frequency:8000000

如果我使用注释"CS_initClockSignal"行而不是其后面的行、我将获得以下输出。

正在配置时钟...
无法识别地址(0x4000)处 CIO 缓冲器中的无效 CIO 命令(24)。 请检查器件和程序存储器映射。
无法识别地址(0x4000)处 CIO 缓冲器中的无效 CIO 命令(24)。 请检查器件和程序存储器映射。
无法识别地址(0x4000)处 CIO 缓冲器中的无效 CIO 命令(24)。 请检查器件和程序存储器映射。

我希望获得以下输出。

正在配置时钟...  
正在验证时钟...  
MCLK_Frequency:16000000  
SMCLK_Frequency:8000000

当我在不同的程序中运行代码时、代码工作正常、但在该程序中无法正常工作。  请提供任何帮助。

#include 
include "driverlib.h"
#include "gpio.h"
#include "stdio.h"
#include "string.h"

int main (void)
{

WDT_A_HOLD (WDT_A_base); //停止看门狗计时器

//配置和验证时钟。

//******** 由于 MCLK 的某种原因,无法使用 CS_clock_divider _1 -在另一个程序中工作,尽管*****

printf ("配置时钟... \n");

CS_setDCOFreq (CS_DCORSEL_1、CS_DCOFSEL_4); // 16MHz
CS_initClockSignal (CS_SMCLK、CS_DCOCLK_select、CS_Clock_divider); // 8MHz
// CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_clock_divider); // 16MHz
CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_Clock_divider); // 8MHz

CS_TurnOnSMCLK();

printf ("检验时钟... \n");

uint32_t MCLK_Frequency;
uint32_t SMCLK_Frequency;

MCLK_Frequency = CS_getMCLK ();
SMCLK_Frequency = CS_getSMCLK ();

printf ("MCLK_Frequency:%ld \n"、MCLK_Frequency);
printf ("SMCLK_Frequency:%ld \n"、SMCLK_Frequency);


while (1){;}

} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无论是 TI 的示例还是您自己的示例、我都无法重现此问题。 您使用的是哪个版本的 MSPDRIVERLIB、您是否考虑升级到最新版本? 您能否确定导致问题的程序之间的差异?

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了创建这个程序、我刚刚创建了一个新项目并从一个正常工作的程序中复制了时钟代码。 我还将 driverlib 文件复制到新的项目文件夹中、以便他们使用相同的版本。 driverlib 文件来自 MSP430_driverlib_2_91_00_20、几个月前下载过、因此它几乎是最新的。 当我有机会查看它是否有用时、我会更新它。 配置时钟后、工作程序有很多代码、但在此之前的唯一代码是配置 FRAM 并声明大量变量供以后使用。

    真正的问题似乎是为什么这样一个简单的程序中有一个没有什么异常的错误?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    找到问题。  在设置时钟之前未配置 FRAM。  我刚才在时钟设置之前添加了以下行。

      FRAMCTL_A_configureWaitStateControl (FRAMCTL_A_ACCESS_TIME_CYCLESS_1); //针对16MHz 系统时钟

    论坛上提出了以下答复: