工具与软件:
大家好!
很抱歉、如果这已包含在另一个问题中、如果包含、请将其链接。 我已尽我的最大能力进行搜索、无法找到似乎有效的答案。
问题:将 DCOCLK 设置为1MHz 以外的任何东西都已被证明是不可能的,我不知道为什么。
尝试的实现:
DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL2 = 0; BCSCTL1 = CALBC1_8MHZ; DCOCTL = CALDCO_8MHZ; // Load 8MHz constants
在我的项目中、我想使用8MHz DCO、因为我想在我的应用中使用高达100KHz 的 PWM 频率。
以上内容似乎无法按预期工作。 使用计时器且 CCR0设置为100时、我得到200kHz 的频率、这没有意义。 请参阅以下内容:
我在这个论坛上找到一些信息、这些信息间接地告诉我、当我通过 BSL 执行闪存操作时、InfoA 被擦除(BSLDEMO.exe)。 我无法确定如何解决此问题、因此我回到了使用 CCS 和 JTAG 编程。
我开始时闪存 MSP430x261x_DCO_flashcal.c、可在示例下找到该函数(我只是搜索"DCO)、以恢复 InfoA 中应该存在的"msp430f2617.h"引用的正确值。 也许我理解不正确、但我认为头文件提取了 InfoA 中的"CALDCO_8MHZ"和"CALBC1_8MHZ"等宏的信息。 在按照"DCO_flashcal"重新刷写我自己的项目后、似乎我的问题尚未解决、在使用上述代码后、我仍然获得200kHz 的 PWM 频率。
通过另一个线程、我发现如果 InfoA 中的数据正确、将 DCOTL 和 BCSCTL1设置为0x8d 似乎可以使这些值准确到应该的值。 我尝试过这个方法、它似乎实际上可行、但我不清楚为什么它默认情况下不能按预期使用头文件工作。
对我来说、这个问题似乎是 DCOCTL 和/或 BCSCTL1没有正确配置。
有人对此有任何见解吗? 我不确定是否应该手动设置这些值、而不是使用头文件/InfoA 中规定的正确值。
感谢您的观看。