请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5418A 有人遇到过这种情况吗?
我将代码从 IAR (MSP430工作平台7.12)迁移到 CCS (10.1.1 + MSP430 driverlib 2.91)-并且计时器速度要慢得多、减慢20倍。
这是否有任何已知原因? 这一点是否已记录在案?
谢谢、
梅希
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
有人遇到过这种情况吗?
我将代码从 IAR (MSP430工作平台7.12)迁移到 CCS (10.1.1 + MSP430 driverlib 2.91)-并且计时器速度要慢得多、减慢20倍。
这是否有任何已知原因? 这一点是否已记录在案?
谢谢、
梅希
谢谢 Aaron。
我返回到一些使用 UCS 的示例程序、特别是 msp430x54x_UCS_9.c 、我意识到缺少一些设置。 (可能在 IAR 中不需要它们? 默认?)
现在代码运行得非常完美-在这里它低于(更改为 TIMERB0):
#define TIMEDIVISION 16128 //*用于时间中断设置:1毫秒周期- 16.128 MHz 时钟。*/
/注释 \
timehandler():时间中断处理程序。 1msec 中断模块
\********* /
#pragma vector=TIMER0_B0_vector
__interrupt void timehandler (void)
{
isRAM_TestInterruptRedrived = 1;//向 RAM 测试指示调用了中断。
//更新时间
TIK += 1;
msec++;//
如果(TIK >= 1000)则更新毫秒计数器//秒计数器是否需要更新?
{
sec++;//更新秒计数器。
TIK -= 1000;
}
if (msec & 0x01)//对于范围
{
P2OUT |= 0x01;//切换每个 TIK
}
否则
{
P2OUT &=~0x01;//切换每个 TIK
}
TB0CCR0 += TIIMEDIVISION;//将偏移添加到 CCR0 (比较寄存器)
}//时间处理程序的*//
******* \
* InitTimer:初始化计时器。*
\******** /
void InitTimer()
{
P7SEL |= 0x03; //端口选择 XT1
UCSCTL3 |= SELREF_2; // FLL Ref = REFO
UCSCTL6 &&~XT1OFF; //在
UCSCTL6上设置 XT1 |= XT1DRIVE_3 + XTS; //开始时的最大驱动强度。 在高频率模式中启用 XT1。
//循环直到 XT1、XT2和 DCO 稳定
执行
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG; //清除故障标志
} while (SFRIFG1&OFIFG); //测试振荡器故障标志
//UCSCTL6 &=~XT1DRIVE_2; //驱动强度减小。
UCSCTL4 = SELA_XT1CLK + SELESS_XT1CLK + SELM_XT1CLK;//从 xt1中选择 Aclkm MCLK 和 Smclk。
UCSCTL5 = DIVS_5;//将 SMCLK 除以32,SMCLK 用于看门狗。- 65ms 间隔。
//初始化定时器 B0
TB0CTL = tassel_1 + MC_2;// 0x120 ACLK、连续运行
TB0CCTL0 = CCIE; // CCR0 (比较控制寄存器)中断使能
TB0CCR0 = TIMEDIVISION;//设置第一次调用计时器中断的时间
SEC = 0;
msec = 0;
TIK = 0;
InitTimer 的}/*