1753|0

1717

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

MSP430设置主时钟源、主时钟源和辅助时钟源 [复制链接]

本帖最后由 火辣西米秀 于 2020-10-10 20:21 编辑

                                                                                                      时钟图

设置主时钟源
/*************************************************************************
*  函数名称:CLOCK_MCLK_Config  (CLOCK_Source mclk , CLOCK_DIVx mclk_div)
*  功能说明:设置主时钟源及分频
*  参数说明:CLOCK_Source mclk   :主时钟时钟源
             CLOCK_DIVx mclk_div :主时钟分频系数
*  函数返回:无
*  使用示例:CLOCK_MCLK_Config  (CLOCK_DCO , DIV_1);   //主时钟使用DCO作为时钟源,分频系数为1(不分频)
*************************************************************************/  
void CLOCK_MCLK_Config  (CLOCK_Source mclk , CLOCK_DIVx mclk_div)
{
  if(mclk == CLOCK_XT2)
  {
    XT2_Config(TRUE);
  }
  else if(mclk == CLOCK_XT1)
  {
    XT1_Config(TRUE);
  }

  UCS->SELM = mclk;                         //选择DCO作为时钟源
  UCS->DIVM = mclk_div;

  switch(mclk)
  {
  case CLOCK_XT1    :g_sClock.MCLK.nHZ = EXTAL_IN_XT1_HZ;break;
  case CLOCK_VLO    :g_sClock.MCLK.nHZ = VLOCLK_FREQUENCY;break;
  case CLOCK_REFO   :g_sClock.MCLK.nHZ = REFOCLK_FREQUENCY;break;       
  case CLOCK_DCO    :g_sClock.MCLK.nHZ = g_sClock.DCO_FLL_Frequency;break;    
  case CLOCK_DCO_DIV:g_sClock.MCLK.nHZ = g_sClock.DCO_FLL_Frequency;break;
  case CLOCK_XT2    :g_sClock.MCLK.nHZ = EXTAL_IN_XT2_HZ;break;
  default :return;
  }
  g_sClock.MCLK.nHZ  >>= mclk_div;
  g_sClock.MCLK.nKHZ = g_sClock.MCLK.nHZ/1000u;
  g_sClock.MCLK.fMHZ = g_sClock.MCLK.nHZ/1000000.0;
}

3.2 设置系统时钟源
/*************************************************************************
*  函数名称:CLOCK_SMCLK_Config (CLOCK_Source smclk, CLOCK_DIVx smclk_div)
*  功能说明:设置系统时钟源及分频
*  参数说明:CLOCK_Source smclk   :系统时钟时钟源
             CLOCK_DIVx smclk_div :系统时钟分频系数
*  函数返回:无
*  使用示例:CLOCK_SMCLK_Config  (CLOCK_DCO , DIV_2);   //系统时钟使用DCO作为时钟源,分频系数为2(二分频)
*************************************************************************/  
void CLOCK_SMCLK_Config (CLOCK_Source smclk, CLOCK_DIVx smclk_div)
{
  if(smclk == CLOCK_XT2)
  {
    XT2_Config(TRUE);
  }
  else if(smclk == CLOCK_XT1)
  {
    XT1_Config(TRUE);
  }

  UCS->SELS = smclk;//选择smclk时钟源
  UCS->DIVS = smclk_div;

  switch(smclk)
  {
  case CLOCK_XT1    :g_sClock.SMCLK.nHZ = EXTAL_IN_XT1_HZ;break;
  case CLOCK_VLO    :g_sClock.SMCLK.nHZ = VLOCLK_FREQUENCY;break;
  case CLOCK_REFO   :g_sClock.SMCLK.nHZ = REFOCLK_FREQUENCY;break;       
  case CLOCK_DCO    :g_sClock.SMCLK.nHZ = g_sClock.DCO_FLL_Frequency;break;
  case CLOCK_DCO_DIV:g_sClock.SMCLK.nHZ = g_sClock.DCO_FLL_Frequency;break;
  case CLOCK_XT2    :g_sClock.SMCLK.nHZ = EXTAL_IN_XT2_HZ;break;
  default :return;
  }
  g_sClock.SMCLK.nHZ >>= smclk_div;
  g_sClock.SMCLK.nKHZ = g_sClock.SMCLK.nHZ/1000u;;
  g_sClock.SMCLK.fMHZ = g_sClock.SMCLK.nHZ/1000000.0;
}

3.3 设置辅助时钟源
/*************************************************************************
*  函数名称:CLOCK_ACLK_Config  (CLOCK_Source aclk , CLOCK_DIVx aclk_div)
*  功能说明:设置辅助时钟源及分频
*  参数说明:CLOCK_Source aclk   :辅助时钟时钟源
             CLOCK_DIVx aclk_div :辅助时钟分频系数
*  函数返回:无
*  使用示例:CLOCK_ACLK_Config  (XT! , DIV_4);   //辅助时钟使用XT1作为时钟源,分频系数为4(四分频)
*************************************************************************/  
void CLOCK_ACLK_Config  (CLOCK_Source aclk , CLOCK_DIVx aclk_div)
{
   if(aclk == CLOCK_XT2)
  {
    XT2_Config(TRUE);
  }
  else if(aclk == CLOCK_XT1)
  {
    XT1_Config(TRUE);
  }

  UCS->SELA = aclk;//选择时钟源                   
  UCS->DIVA = aclk_div; //设置分频系数为0

  switch(aclk)
  {
  case CLOCK_XT1    :g_sClock.ACLK.nHZ = EXTAL_IN_XT1_HZ;break;
  case CLOCK_VLO    :g_sClock.ACLK.nHZ = VLOCLK_FREQUENCY;break;
  case CLOCK_REFO   :g_sClock.ACLK.nHZ = REFOCLK_FREQUENCY;break;       
  case CLOCK_DCO    :g_sClock.ACLK.nHZ = g_sClock.DCO_FLL_Frequency;break;   
  case CLOCK_DCO_DIV:g_sClock.ACLK.nHZ = g_sClock.DCO_FLL_Frequency;break;
  case CLOCK_XT2    :g_sClock.ACLK.nHZ = EXTAL_IN_XT2_HZ;break;
  default :return;
  }
  g_sClock.ACLK.nHZ >>= aclk_div;
  g_sClock.ACLK.nKHZ = g_sClock.ACLK.nHZ/1000u;;
  g_sClock.ACLK.fMHZ = g_sClock.ACLK.nHZ/1000000.0;
}

4.更改时钟来源操作
具体路径请改变msp430f5529_system.h里面的宏定义修改时钟源及时钟分频

//宏定义初始化时钟频率及时钟源
#define FLL_REF         FLLREF_REFO     //FLL参考时钟源
#define FLLREF_DIV      FLLREF_DIV_1    //FLL参考时钟分频系数
#define DCO_CLK_HZ      25MHZ            //DCO时钟频率
//主时钟设置
#define MCLK_SOURCE     CLOCK_DCO       //主时钟时钟源
#define MCLK_DIV        CLOCK_DIV_1     //主时钟时钟分频系数
//系统时钟设置
#define SMCLK_SOURCE    CLOCK_XT2       //系统时钟时钟源
#define SMCLK_DIV       CLOCK_DIV_1     //系统时钟分频系数
//辅助时钟设置
#define ACLK_SOURCE     CLOCK_REFO      //辅助时钟时钟源
#define ACLK_DIV        CLOCK_DIV_1     //辅助时钟分频系数

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表