msp430基本定时器时间计算问题,求指教#include void main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDTIE2 |= BTIE; // Enable BT interruptBTCTL = BTDIV+BTIP1+BTIP0; // BT=Fclk2/16=8ms,CLK2=ACLK/256 16分频 P5DIR |= 0x02; // Set P5.1 to outp
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 22:20:02
msp430基本定时器时间计算问题,求指教#include void main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDTIE2 |= BTIE; // Enable BT interruptBTCTL = BTDIV+BTIP1+BTIP0; // BT=Fclk2/16=8ms,CLK2=ACLK/256 16分频 P5DIR |= 0x02; // Set P5.1 to outp
msp430基本定时器时间计算问题,求指教
#include
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
IE2 |= BTIE; // Enable BT interrupt
BTCTL = BTDIV+BTIP1+BTIP0; // BT=Fclk2/16=8ms,CLK2=ACLK/256 16分频
P5DIR |= 0x02; // Set P5.1 to output direction
_EINT(); // Enable interrupts
for (;;)
{
_BIS_SR(CPUOFF); // Enter LPM0
_NOP(); // Required only for C-spy
}
}
// Basic Timer interrupt service routine
interrupt[BASICTIMER_VECTOR] void basic_timer(void)
{
P5OUT ^= 0x02; // Toggle P5.1 using exclusive-OR
}
以上程序如何产生了一个频率为8HZ的方波.
ACLK=32768HZ MCLK=SMCLK=32*ACLK
1.048576MHZ
msp430基本定时器时间计算问题,求指教#include void main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDTIE2 |= BTIE; // Enable BT interruptBTCTL = BTDIV+BTIP1+BTIP0; // BT=Fclk2/16=8ms,CLK2=ACLK/256 16分频 P5DIR |= 0x02; // Set P5.1 to outp
MSP430的x44x系列有个Basic Timer1 interrupt,即基础时钟中断,它是用基础时钟来作中断的,在你给的程序中可以看到中断向量:BASICTIMER_VECTOR.
打个比分说,如果此时基础时钟设置为1MHz,那么这个中断就是1/1000000秒进入一次,这样就能产生1MHz的方波了 !
那么,我们来看下这个程序的基础时钟设置,即BT设置,BT=Basic Timer.
这个设置就一句话:BTCTL = BTDIV+BTIP1+BTIP0
BTDIV:ACLK/256,即32768/256=128Hz,如果没有后面的两个设置,那么到此为止BT=128Hz了
BTIP1+BTIP0:这两个是连在一起的,表示BT=fCLK2/16=128/16=8Hz
那么,就是说基础时钟BT=8Hz
然后基础时钟中断进入的频率就是8Hz
进入之后对P5.1口进行异或处理,就得到了8Hz的方波.
仅此而以.