This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR2355:将 IE1寄存器用于 MSP430低功耗 MCU 时出现问题。

Guru**** 1993015 points
Other Parts Discussed in Thread: MSP430FR2355
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/732823/ccs-msp430fr2355-problem-using-ie1-register-for-msp430-low-power-mcu

器件型号:MSP430FR2355

工具/软件:Code Composer Studio

你好。
我在 CCS (版本:8.1.0.00011)中为 MSP430 (msp430fr2355)编码,以编写一个程序,该程序使用看门狗计时器作为间隔计时器,每1秒使用 ACLK 生成一次中断。
我得到的误差是
标识符"IE1"未定义。
它对应于看门狗定时器的中断标志寄存器。
上面给出的是我编写的基本代码。

#include 

int main (void)
{
PM5CTL0&=~LOCKLPM5;
WDTCTL = WDT_ADLY_1000;//停止看门狗计时器
P1DIR=BIT0;
IE1|= WDTIE;
enable_interrupts ();
while (1);
返回0;
}
#pragma vector=WDT_vector
__interrupt void wdtled (void)
{
P1OUT=BIT0;
_DELAY_CYCLES (100000);
P1OUT=0x00;
__DELAY_CYCLES (100000);
}

我已经了解了 e2e 社区中发布的许多示例代码、其中大多数使用了此 IE1寄存器、但我无法使用此寄存器。
如果有人知道解决方案,请尽快帮助我。

提前感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 FR2xx 器件上、IE1寄存器不被称为 IE1、而是 SFRIE1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢主席先生、这消除了错误、但您能告诉我这些信息的来源、这样我就不会在将来与其他事情混淆。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如 FR4xx/FR2xx 系列用户指南所示。

    但是、一般而言、要查看您可以实际使用的符号、请查看实际头文件(MSP430‍fr2355.h):

    /*********
    SFR 寄存器
    /
    
    #define __MSP430_has_SFR__ //
    #define __MSP430_BASEADDRESS_SFR__ 0x0100
    #define SFR_base 定义模块是否可用 _MSP430_BASEADDRESS_SFR__
    
    SFR_w (SFRIE1); /*中断使能*/
    SFR_b (SFRIE1_L);
    SFR_b (SFRIE1_H);
    SFR_w (SFRIFG1); /*中断标志*/
    SFR_b (SFRIFG1_L);
    SFR_b (SFRIFG1_H);
    SFR_w (SFRRPCR); /*复位引脚控制*/
    SFR_b (SFRRPCR_L);
    SFR_b (SFRRPCR_H);
    
    /* SFR 寄存器偏移*/
    #define OFS_SFRIE1 (0x0000)
    #define OFS_SFRIE1_L OFS_SFRIE1
    #define OFS_SFRIE1_H OFS_SFRIE1+1
    #define OFS_SFRIFG1 (0x0002)
    #define OFS_SFRIFG1_L OFS_SFRIFG1
    #define OFS_SFRIFG1_H OFS_SFRIFG1+1
    #define OFS_SFRRPCR (0x0004)
    #define OFS_SFRRPCR_L OFS_SFRRPCR
    #define OFS_SFRRPCR_H OFS_SFRRPCR+1
    
    /* SFR 控制位*/
    
    /* SFRIE1控制位*/
    #define WDTIE (0x0001) /*看门狗定时器中断使能*/
    #define WDTIE_L (0x0001)
    #define WDTIE_0 (0x0000) /*禁用中断*/
    #define WDTIE_1 (0x0001) /*启用中断*/
    #define WDTIE_1_L (0x0001)
    #define WDTIE_DISABLE (0x0000) /*禁用中断*/
    #define WDTIE_ENABLE (0x0001) /*启用中断*/
    #define WDTIE_ENABLE_L (0x0001)
    #define OFIE (0x0002) /*振荡器故障中断使能*/ 

    (所有这些_L/_H 符号都用于字节访问;请忽略它们。)

    报头文件对于查找中断矢量值的名称(手册中没有提到)特别有用:

    #define UCIV_NONE (0x0000) /*无中断挂起*/
    #define UCIV_UCRXIFG (0x0002) /*中断源:接收缓冲区已满;中断标志:
    UCRXIFG;中断优先级:最高*/
    #define UCIV_UCTXIFG (0x0004) /*中断源:发送缓冲区为空;中断标志:
    UCTXIFG */
    #define UCIV_UCSTTIFG (0x0006) /*中断源:接收到起始位;中断标志:UCSTTIFG */
    #define UCIV__UCTXCPTIFG (0x0008) /*中断源:发送完成;中断标志:
    UCTXCPTIFG;中断优先级:最低*/