前段时间,因为项目原因我接触了MSP430FR2000单片机。因为以前多数时间用的是MSP430F5529,所以在上手这款单片机时虽然比较简单,但是还是有一定的困难,因为FR2000与F5529的寄存器差别还是存在,网上又查不到相应的一些例程。只有自己看着以前的5529去写。以下是一些成功的程序:
PWM模块:
void PWM_Init(void)
{
P2DIR |= BIT0 ;
P2SEL0 |= BIT0 ;
TB0CCR0 = 1000;
TB0CCTL1 = OUTMOD_7;
TB0CCR1 = 500;
TB0CTL |= MC_1 + TBSSEL__ACLK + TBCLR;
}
时钟初始化模块:
void CLK_init(void)
{
CSCTL3 |= FLLREFDIV__1 + SELREF_1; //1分频 , 参考时钟REFCLK
__bis_SR_register(SCG0);//关闭FLL
CSCTL0 = 0x00;
CSCTL1 |= DCORSEL_2 + 0;
CSCTL2 |= FLLD__1 + 31;
__bic_SR_register(SCG0);//开启FLL
CSCTL4 |= SELMS__REFOCLK + SELA__REFOCLK ;
CSCTL5 |= DIVM__1 + DIVS__1 + DIVA__1;
CSCTL8 = 0;
}
串口模块(按道理说,我觉得这个是没问题的,但是串口发不出东西):
void USART_Init(void)
{
P1SEL0 |= BIT2 + BIT3;
UCA0CTLW0 = UCSWRST;
UCA0CTLW0 |= UCSSEL__ACLK ;
UCA0BR0 = 3;
UCA0BR1 = 0x00;
UCA0MCTLW = UCBRS3 + UCBRF0;
UCA0CTLW0 &=~ UCSWRST;
UCA0IE |= UCRXIE;
}
void Uart1send(u8 cm)
{
while(!(UCA0IFG & UCTXIFG));
UCA0TXBUF = cm;
}
void Uart1sendcom(u8 *cmd)
{
while(*cmd != '\0')
{
Uart1send(*cmd);
cmd++;
}
}
还有一点非常非常重要的,因为我在选型这款单片机的时候就是看见了他的芯片手册写了RTC功能,但是在我把芯片买了板子打出来准备写RTC程序时,才发现这款单片机的RTC的真实名字是RTC_COUNTER,仅仅是用作计数器的RTC模块(注意:这里不是实时时钟RTC)。所以并不能满足我的需要。这就造成了时间与精力上的浪费,希望大家别像我一样。
本文来自论坛,点击查看完整帖子内容。