Other Parts Discussed in Thread: MSP430F2619
主题中讨论的其他部件:MSP430F2619, MSP430WARE
工具/软件:Code Composer Studio
大家好,我正在从一个工作的传统IAR移植到CCS,当 程序计数器到达调用函数设置16MHz的代码时,CCS代码将标记OFIFG标志。CCS代码与时钟定义/声明完全相同。
详细了解IAR和CCS之间的MSP430f2619.h文件,我注意到内部时钟的校准常量不同。下面是IAR和CCS之间16MHz函数和校准常量的声明。
下面是代码和声明。感谢您提供任何帮助。
编辑:出于某些原因,我看不到我插入的代码-请点击"回复"按钮查看整个帖子
// msp430fxxx.h文件中的声明来自CCS//
#define CAL_DCO_16MHz (0x0002) /* 16MHz DCOCTL校准数据索引*/
#define CAL_BC1_16MHz (0x0003) /* 16MHz BCSCL1校准数据的索引*/
#define CAL_DCO_12MHz (0x0004) /* 12MHz DCOCTL校准数据的索引*/
#define CAL_BC1_12MHz (0x0005) /* 12MHz BCSCL1校准数据的索引*/
#define CAL_DCO_8MHZ (0x0006) /* 8MHz DCOCTL校准数据索引*/
#define CAL_BC1_8MHZ (0x0007) /* 8MHz BCSCL1校准数据的索引*/
#define CAL_DCO_1MHz (0x0008) /* 1MHz DCOCTL校准数据的索引*/
#define CAL_BC1_1MHz (0x0009) /* 1MHz BCSCL1校准数据的索引*//**************************************************************
*信息内存中的校准数据
****************************************************** /
#ifndef __DisableCalData
SFR_8位(CALDCO_16MHz); /* 16MHz *的DCOCTL校准数据/
SFR_8位(CALBC1_16MHz); 16MHz *的/* BCSCL1校准数据/
SFR_8位(CALDCO_12MHz); /* 12MHz的DCOCTL校准数据*/
SFR_8位(CALBC1_12MHz); /* 12MHz *的BCSCL1校准数据/
SFR_8位(CALDCO_8MHZ); /* 8MHz */
SFR_8位的DCOCTL校准数据(CALBC1_8MHZ); /* 8MHz的BCSCL1校准数据*/
SFR_8位(CALDCO_1MHz); /* 1MHz的DCOCTL校准数据*/
SFR_8位(CALBC1_1MHz); /* 1MHz的BCSCL1校准数据*//
来自IAR// msp430fxxx.h文件
的声明#define CAL_DCO_16MHz (0x0000u)/* 16MHz DCOCTL校准数据索引*/
#define CAL_BC1_16MHz (0x0001u)/* 16MHz BCSCL1校准数据索引*/
#define CAL_DCO_12MHz (0x0002u)/* 12MHz DCOCTL校准数据索引*/
#define CAL_BC1_12MHz (0x0003u)/* 12MHz的BCSCL1校准数据索引*/
#define CAL_DCO_8MHZ (0x0004u)/* 8MHz * DCOCTL校准数据索引/
#define CAL_BC1_8MHZ (0x0005u)/* 8MHz BCSCL1校准数据索引*/
#define CAL_DCO_1MHz (0x0006u)/* 1MHz DCOCTL校准数据索引*/
#define CAL_BC1_1MHz (0x0007u)/* 1MHz BCSCL1校准数据索引*//************************************************
*信息内存中的校准数据
****************************************************** /
#ifndef __DisableCalData
#define CALDCO_16MHz_ (0x10F8u)/* 16MHz DCOCTL校准数据*/
只读DEFC (CALDCO_16MHz ,CALDCO_16MHz_)
#define CALC1_16MHz_ (0x10F9u)/* BCSCL1 16MHz校准数据*/
只读DEFC (CALC1_16MHz ,CALC1_16MHz_)
#define CALDCO_12MHz_ (0x10FAu)/* 12MHz DCOCTL校准数据*/
只读DEFC( CALDCO_12MHz) ,CALDCO_12MHz_)
#define CALC1_12MHz_ (0x10FBu)/* BCSCL1 12MHz校准数据*/
只读DEFC (CALC1_12MHz ,CALC1_12MHz_)
#define CALDCO_8MHZ_ (0x10FCu)/* 8MHz DCOCTL校准数据*/
只读DEFC (CALDCO_8MHZ) ,CALDCO_8MHZ_)
#define CALC1_8MHZ_ (0x10FDu)/* BCSCTL1 8MHz校准数据*/
只读DEFC( CALC1_8MHZ ,CALC1_8MHZ_)
#define CALDCO_1MHz_ (0x10FEu)/* 1MHz DCOCTL校准数据*/
只读DEFC (CALDCO_1MHz ,CALDCO_1MHz_)
#define CALC1_1MHz_ (0x10FFu)/* BCSCL1用于1MHz的校准数据*/
只读DEFC( CALC1_1MHz) ,CALC1_1MHz__////////////////////////////////////////////////////////////////////////////////////
void Clock_16MHz ()
{
IE1 &=~(OFIE); //禁用OSC故障中断
DCOCTL = DCO2 + DCO0; //将频率设置为16MHz,DCOx = 4
BCSCTL1 = XT2OFF + RSEL3 + RSEL2 + RSEL1 + RSEL0;//RSELx = 15
BCSCTL2 = 0x00; //分隔符=0表示MCLK,SMCLK = DCO
BCSCTL3 = LFXT1S_3 | XCAP_0; //LFXT1CLK源:-外部振荡器,XCAP = 1pF
__DELAY_CYCLES (100);
IFG1 &=~(OFIFG); //清除OSC标志
IE1 |= OFIE; //启用OSC故障中断
}