MSP430主频问题

[复制链接]
3052|47
 楼主| CaLipton 发表于 2017-11-14 10:05 | 显示全部楼层 |阅读模式
单片机是msp430F169,为什么我将Mclk设置为默认模式时,主频不是800khz~1MHZ,而是奇葩的150KHZ左右。并且看了说明书之后,将DCOCTL,BCsctL1,BCSCTL2重新配置了一遍还是没有效果。求解?
Rospiers 发表于 2017-11-14 10:36 | 显示全部楼层
可以参考这个时钟设置函数:
//时钟初始化
void Init_CLK(void)
{
  unsigned int qq;
  WDTCTL= WDTPW + WDTHOLD ; // 关看门狗
  BCSCTL1 &= ~XT2OFF;           //打开XT2高速晶体振荡器
  do
  {
    IFG1 &= ~OFIFG;           //Clear oscFault flag清除振荡器失效标志
    for(qq=0xff;qq>0;qq--);
  }while((IFG1&OFIFG));       //oscFault flag still set

  BCSCTL2 |= SELM_2;          //MCLK=XT2
  //BCSCTL2 |= DIVM_0;        //控制MCLK不分频,默认

  BCSCTL2 |= SELS;            //SMCLK=XT2
  //BCSCTL2 |= DIVS_0;        //控制SMCLK不分频,默认
}
dirtwillfly 发表于 2017-11-14 10:37 | 显示全部楼层
默认的mclk不用自己再配置的。。
能都提供下你的代码?
Lewisnx 发表于 2017-11-14 10:51 | 显示全部楼层
不知道您的主频是如何测量的,是在MCLK的时钟输出引脚上测量的吗?
CCompton 发表于 2017-11-14 11:03 | 显示全部楼层
配置成ACLK试试正不正常,,或者换颗芯片试试
Richardd 发表于 2017-11-14 11:17 | 显示全部楼层
一个循环需要多少条指令,多少个周期
Mattheww 发表于 2017-11-14 11:25 | 显示全部楼层
本帖最后由 Mattheww 于 2017-11-14 11:27 编辑

好好整理下问题 可以直接用MCLK配置成定时器时钟,定个1s试试
Erichk 发表于 2017-11-14 16:53 | 显示全部楼层
首先,for循环一个周期有多条指令,其次,每条指令执行周期不是一个机器周期。
aspoke 发表于 2017-11-14 21:46 | 显示全部楼层
假设选择默认MCLK作为FLASH时序发生器,默认MCLK时钟频率典型值是1.1MHz,即1126.4KHz,需要3分频(375.5KHz,此时FN1为1)或者4分频(281.6KHz,此时FN1、FN0为1)才能符合257KHz~476KHz。
232321122 发表于 2017-11-14 21:47 | 显示全部楼层
void main()
{

    BCSCTL1 &= ~XT2OFF;           // XT2on
  do
  {
      IFG1 &= ~OFIFG;               // 清除晶振失效标识位
      for (i = 0x50; i > 0; i--);   // 延时等待晶振起振
  }
  while ((IFG1 & OFIFG));       //晶振失效标志仍然存在?

  BCSCTL2 |= SELM_2 + SELS;     // MCLK = SMCLK = XT2 (safe)\
   
}
ghuca 发表于 2017-11-14 21:47 | 显示全部楼层
mclk也可以任意设置的;。
aspoke 发表于 2017-11-14 21:50 | 显示全部楼层
通过设置FN0~FN5可以将时钟分频1~64,即32*FN5 + 16*FN4 + 8*FN3 + 4*FN2 + 2*FN1 + FN0 + 1。
232321122 发表于 2017-11-14 21:50 | 显示全部楼层
设置mclk位外部吗?
ghuca 发表于 2017-11-14 21:50 | 显示全部楼层
没有看懂楼主需要配置多大的频率?
smilingangel 发表于 2017-11-15 19:31 | 显示全部楼层
直接设置其内部的频率就可以的呀
comeon201208 发表于 2017-11-15 20:29 | 显示全部楼层
直接采用其1Mhz的DCO的设计的不就可以了么?
tongbu2015 发表于 2017-11-20 23:13 | 显示全部楼层
Rospiers 发表于 2017-11-14 10:36
可以参考这个时钟设置函数:
//时钟初始化
void Init_CLK(void)

程序上比较简单的,就看你的外部晶振是否OK ,能正常被起振的不
wangdezhi 发表于 2017-11-21 13:19 | 显示全部楼层
这个是不是分频的问题吗
isseed 发表于 2017-11-21 13:19 | 显示全部楼层
选择DCO作为时钟源
suzhanhua 发表于 2017-11-21 13:20 | 显示全部楼层
你的程序是怎么配置的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

126

主题

369

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部