?? set_dco.c
字號:
//******************************************************************************
// MSP-FET430P140 Demo - Setting DCO Clock
//
// This example shows how to use set the DCO clock using 32768Hz crystal
//
//
// MSP430F149
// ---------------
// | |
// | A0 (P6.0)|<---- Vin
// | |
//
//
// M.Mitchell
// Texas Instruments, Inc
// February,2002
// Built with IAR Embedded Workbench Version: 1.25A
//******************************************************************************
#include "msp430x16x.h" // Standard Equations
//Frequecny = 32768/4 * delta
void Set_DCO (unsigned int delta) // Subroutine to set DCO
{
unsigned int Compare, Oldcapture = 0;
BCSCTL1 |= DIVA_3; // ACLK = LFXT1CLK/8
CCTL2 = CM_1 + CCIS_1 + CAP; // CAP, ACLK
TACTL = TASSEL_2 + MC_2 + TACLR; // SMCLK, cont-mode, clear
while (1)
{
while (!(CCIFG & CCTL2)); // Wait until capture occurred
CCTL2 &= ~CCIFG; // Capture occurred, clear flag
Compare = CCR2; // Get current captured SMCLK
Compare = Compare - Oldcapture; // SMCLK difference
Oldcapture = CCR2; // Save current captured SMCLK
if (delta == Compare)
{
break; // Break loop
}
else if (delta < Compare)
{
DCOCTL--;
if (DCOCTL == 0xFF) // DCO is too fast, slow it down
if (BCSCTL1 & 0x07)
BCSCTL1--; // DCO role under?, Sel lower RSEL
else
break; // Error condition, break loop
}
else
{
DCOCTL++; // DCO is too slow, speed it up
if (DCOCTL == 0x00)
if ((BCSCTL1 & 0x07) != 0x07)
BCSCTL1++; // DCO role over? Sel higher RSEL
else
break; // Error condition, break loop
}
}
CCTL2 = 0; // Stop CCR2
TACTL = 0; // Stop Timer_A
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -