TI中文支持网
TI专业的中文技术问题搜集分享网站

配置时钟,程序跑飞

代码如下,使用MSP430F6721.
#include "inc/hw_memmap.h"
#include "wdt_a.h"
#include "pmm.h"
#include "ucs.h"
#include "gpio.h"

uint32_t clockValue;

void main (void)
{

//关闭看门狗
WDT_A_hold(WDT_A_BASE);
//Vcore = 3
PMM_setVCore(PMM_BASE,PMM_CORE_LEVEL_3);
//REFO
UCS_clockSignalInit(UCS_BASE,UCS_FLLREF,UCS_REFOCLK_SELECT,UCS_CLOCK_DIVIDER_1);
//ACLK
UCS_clockSignalInit(UCS_BASE,UCS_ACLK,UCS_REFOCLK_SELECT,UCS_CLOCK_DIVIDER_1);
//MCLK
UCS_initFLLSettle(UCS_BASE,20000,610);
//CLK GPIO
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_PJ,GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN3);
while(1){
clockValue = UCS_getACLK(UCS_BASE);
_nop();
clockValue = UCS_getMCLK(UCS_BASE);
_nop();
clockValue = UCS_getSMCLK(UCS_BASE);
_nop();
}
}

只要到达20MHz或者更高,就会报错:

No source available for "0x4" 

是因为我的芯片有问题?

Shi JianHua:

先考虑自己的配置,在考虑自己的程序,最后考虑你的外部硬件。或者把外部硬件首先排除,再排除软件。

Lina Lian:

JunJie Li1,

可否具体描述一下现象?是不是编译可以通过,但是下载进去程序运行,一旦你点击暂停后,会出现No source available for "0x4" ?若是其他现象,可否具体描述一下?

建议你此时直接用示波器观察一下MCLk对应输出pin脚,看看输出的MCLk是不是正好是你设置的频率?

JunJie Li1:

回复 Lina Lian:

单步跟一个问题都没有,所有负载都拿开了,这片是我的申请样品,如果使用断点.在执行UCS_initFLLSettle(UCS_BASE,20000,610);前一直没事,执行UCS_initFLLSettle(UCS_BASE,20000,610);后就报错,今天早上的错误还是0x4,今早还时不时连接仿真器失败,我用两线制和四线制调试都是如此,示波器无法观测到震荡,我的示波器是1G的,频率计测试得到0.05 ~ 0.,20Hz,50ppm.怎么可能.

Lina Lian:

回复 JunJie Li1:

JunJie Li1,

1. 请问你这里的UCS_initFLLSettle函数是哪里来的?你调用core library 中的Init_FLL_Settle函数试试?

2. 你用的是CCS吗? 把CCS升级一下再试试,可能是compiler版本太低了。

3. 你先用低点的频率给MCLK, 输出后用示波器观察到后,再调高试试。

JunJie Li1:

回复 Lina Lian:

CCS最新版的,从你们官网下了几次,这是DRIVERLIB的文件,用init_FLL_Settle一样不行.MCLK到8MHz稳定.12MHz下间歇出错,再上就经常错了.

Lina Lian:

回复 JunJie Li1:

JunJie Li1,

调用driverlib后出现 No source available for ?,我也遇到过,但是并不影响功能的实现。这是因为程序中调用了某些lib中函数,但是此函数源码不开放。故运行时出现此提示。

另外在确认core level设高之后,在用万用表测一下供电电压是否足够高。

Johnny Lu:

回复 Lina Lian:

你好,我用的ccs5.1仿真器,芯片是M430F2618,刚开始用仿真器,有一个问题老解决不了,请你帮我看看好吗http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/t/28932.aspx

赞(0)
未经允许不得转载:TI中文支持网 » 配置时钟,程序跑飞
分享到: 更多 (0)