×
单片机 > 单片机程序设计 > 详情

我的低功耗MSP430学习生涯

发布时间:2020-12-31 发布时间:
|

从今天开始学习利用MSP430FR2433这款芯片实现测量不同阻抗的天线并实现匹配。

这是我第一次用MCU,用的不好,请多多指教,中途有错,请纠正。

(1)硬件部分功能实现

MCU

下面是天线匹配

最后一个模块是电阻桥

(2)代码部分

这里我刚刚开始学,下面是主程序,我将以看懂程序来记录我的学习过程。

void main(void)

{

// Initialize MCU

init_watchdog(); //初始化看门狗

init_clocks();

init_gpios();


// Initialize peripherals

init_rocky100();

init_rmeter();


// Release MCU gpios

release_gpios();


__bis_SR_register(GIE);


// Load configuration

// Configure sensor

init_systimer();


fSysTick = true;


while (1)

{


    if (fSysTick == true)

    {

        // Reset timer flag

        fSysTick = false;

        if (SysTickCounter++ >= r100DemoConf.nSysTicksPerSample)

        {

            SysTickCounter = 0;

            rocky100_update_data(meas_rmeter());

        }

    }


    if (fR100 == true)

    {

        // Reset timer flag

        fR100 = false;


        // Check rx_buffer


        // Reset SPI

        reset_rocky100_spi();


    }


    if (rocky100_is_idle())

    {

        mcu_lpm_enter(4);

    }else{

        mcu_lpm_enter(0);

    }

}


看门狗的初始化程序比较简单,WDTPW=0X5A00,这是默认值,WDTHOLD=0X0080,这样可以使低八位的最高位置1,这部分可以查手册,在看门狗寄存器有介绍。


void init_watchdog()

{

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer,WDTHOLD=1b,WDTPW set fault。

}

现在要理解这个时钟初始化程序,

void init_clocks()

{

// Configure one FRAM waitstate as required by the device datasheet for MCLK

// operation beyond 8MHz before configuring the clock system.

FRCTL0 = FRCTLPW | NWAITS_1; //使能FRCTL寄存器,等待模式1


__bis_SR_register(SCG0);                           // disable FLL

这个代码让我知道了bis与bic的区别,,下面可以查CSC寄存器得到每一句话的意思。

CSCTL3 |= SELREF__REFOCLK;               // Set REFO as FLL reference source,P116

CSCTL0 = 0;                                   // clear DCO and MOD registers

CSCTL1 &= ~(DCORSEL_7);             // Clear DCO frequency select bits first,即使是取反了,运算时先取反,然后与

CSCTL1 |= DCORSEL_5;                               // Set DCO = 16MHz

CSCTL2 = FLLD_0 + 487;                             // DCOCLKDIV = 16MHz   ,000b = fDCOCLK ÷ 1,487=0X01E7=0000 0001 1110 0111

__delay_cycles(3);                                 //这里延时了多久,我在猜测这里是不是延时3s ,

//__bic_SR_register(SCG0);                           // enable FLL

// Disable waiting FLL lock, as it takes about 300ms in active mode.

// Just go to sleep and work with unlocked clock during first operations.

//while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1));         // FLL locked


CSCTL4 = SELMS__DCOCLKDIV; // set default REFO(~32768Hz) as ACLK source, ACLK = 32768Hz

                                           // default DCOCLKDIV as MCLK and SMCLK source


}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2