msp430汇编,时钟设置问题

msp430汇编,时钟设置问题

此问题已被解答
All Replies
  • 秀才410分


    BCSCTL1 = CALBC1_1MHZ; // Set range to 1MHz
    DCOCTL = CALDCO_1MHZ; // Set DCO to 1MHz. Declared in msp430g2553.h

    这个为什么会设置内部时钟晶振为1M

    #define CALDCO_1MHZ_ (0x10FEu) /* DCOCTL Calibration Data for 1MHz */
    READ_ONLY DEFC( CALDCO_1MHZ , CALDCO_1MHZ_)

    这个预定义又怎么解释

    #define DEFC(name, address) __no_init volatile unsigned char name @ address;

    这一行@指令又表示什么?晕死

  • 榜眼18678分

    你好,

    代码这样写的目的是为了调用出厂前已经效验的数据,把这个数据直接给到DCO寄存器,让DCO寄存器按照校准好的几个值来进行运行。

    我不直接解释告诉你答案,你单步仿真看看CALBC1_1MHZ对应的是flash哪里的值。

    然后思考之后我们再讨论。

    祝好

    Michael Qian

  • 秀才410分

    CALBC1_1MHZ值的大小是0x87,CALDCO_1MHZ的值是0x66,对应RSEL=7,DCOX=3,MODX=6,LFXT1模式低频,这样配置的话dco频率就是1Mhz了么,那么

    #define CALBC1_1MHZ_ (0x10FFu) /* BCSCTL1 Calibration Data for 1MHz */
    READ_ONLY DEFC( CALBC1_1MHZ , CALBC1_1MHZ_)

    怎么解释?

  • 榜眼18678分

    你好,

    我不确定你读的诗句是否正确。

    #define CALBC1_1MHZ_ (0x10FFu) /* BCSCTL1 Calibration Data for 1MHz */

    是定义CALDC1_1MHZ带便的是存放在flash的物理地址在0x10ff的数据。

    不要去改写他,改写之后你要重新校准了。


    祝好

    Michael Qian

  • 秀才120分

    你好  可以指教一下是怎么读出来的Flash的值吗  我读和你不一样啊  可是咱们是一样的代码语句

  • 状元43745分

    hi XIAOGUO GUO1:

    不一样是正常的,因为那个是校准值

    昵称:灰小子

    qq:1358611172

  • 秀才120分

    你好 我想问一下   这个CALDC1_1MHZ到底是一个flash里面某个地址即(0x10ff)里面的一个数据   还是这个CALDC1_1MHZ本身就是一个地址  当我用这个CALDC1_1MHZ的时候 他就会自动取出来这个地址里面的数据   我仿真看了一下 汇编指令   是这样的  如下图:

     if (CALBC1_1MHZ==0xFF) 这条语句的汇编解释是   cmp.b  #0XFF,&CALBC1_1MHZ  意思不就是把 CALBC1_1MHZ里面的数据取出来 和立即数0XFF比较吗 ?

    我的理解对吗??