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/LUNCHXL-F2.8377万S:在F2.8377万S中声明正确的变量

Guru**** 2540720 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/597568/ccs-launchxl-f28377s-declare-a-correct-variable-in-f28377s

部件号:LAUNCHXL-F2.8377万S

工具/软件:Code Composer Studio

您好,

 请告诉我如何声明正确的变量。 我要将此DELAY DELAY DELAY _US(1000*500)声明为程序末尾给出的变量T1。

//包含的文件
//
#include "F28x_Project.h"

//
//定义
//

#Define Blinky_LED_GPIO 12.

中断无效XINT1_ISR(void);


Void主(void)

//
//步骤1. 初始化系统控制:
// PLL,看门狗,启用外设时钟
//此示例函数可在F2837xS_sysctrl.c文件中找到。
//
InitSysCtrl();

//
//步骤2. 初始化GPIO:
//此示例函数可在F2837xS_GPIO.c文件和中找到
//说明了如何将GPIO设置为其默认状态。
//
伊尼特·格皮奥();
GPIO_SetupPinMux (Blinky_LED_GPIO,GPIO _MUX_CPU1,0);
GPIO_SetupPinOptions (Blinky_LED_GPIO,GPIO输出,GPIO);

//
//步骤3. 清除所有中断并初始化PIE矢量表:
//禁用CPU中断
//
色调;

//
//将PIE控件寄存器初始化为其默认状态。
//默认状态是禁用所有PIE中断和标志
//被清除。
//此函数位于F2837xS_PIECTRL.c文件中。
//
InitPieCtrl();

//
//禁用CPU中断并清除所有CPU中断标志:
//
IER = 0x0000;
IFR = 0x0000;

//
//使用指向外壳中断的指针初始化PIE矢量表
//服务例程(ISR)。
//这将填充整个表,即使中断也是如此
//在本例中不使用。 这对于调试非常有用。
// shell ISR例程位于F2837xS_DefaultIsr.C.中
//此函数位于F2837xS_PieVect.C.中
//
InitPieVectorTable();

//
//本示例中使用的中断被重新映射到
//此文件中找到ISR函数。
//
EALLOW;//这是写入EALLOW保护寄存器所必需的
PieVectorTable.XINT1_INT =&XINT1_ISR;
EDIS;//这是禁用写入EALLOW保护寄存器所必需的

//


//
//在PIE中启用XINT1和XINT2:组1中断4和5
//启用连接到WAKEINT的INT1:
//
PieCtrlRegs.PIECTRL.bit.ENPIE =1;//启用PIE块
PieCtrlRegs.PIEIER1.bit.INTx4 =1;//启用PIE组1 INT4
PieCtrlRegs.PIEIER1.bit.INTx5 =1;//启用PIE组1 INT5
IER || M_INT1;//启用CPU INT1
EINT;//启用全局中断

// GPIO14是输入
//
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 0;// GPIO
gpioCtrlRegs.GPADIR.bit.GPIO14 = 0;//输入
GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 0;// XINT1仅同步到SYSCLKOUT

EDIS;

//
// GPIO14是XINT1
//
GPIO_SetupXINT1Gpio(14);

//
//配置XINT1
//
XintRegs.XINT1CR.Bit.Polarity = 1;//提升边缘中断1
//下降边缘中断0

//
//启用XINT1
//
XintRegs.XINT1CR.bit.enable = 1;//启用XINT1

//
//
//启用全局中断和更高优先级的实时调试事件:
//
EINT;//启用全局中断INTM
ERTM;//启用全局实时中断DBGM

//
//步骤6。 空闲循环。 只需坐下来永远循环(可选):
//
对于(;;)


}
}

//
//我的内部
//
// XINT1_ISR -外部中断1 ISR
//

中断无效XINT1_ISR(void)

//
//打开LED
//
GPIO写入引脚(Blinky_LED_GPIO,0);

//
//延迟一段时间。
//
DELAY _US(1000*500);

//
//关闭LED
//
GPIO_WritePin (Blinky_LED_GPIO,1);

//
//延迟一段时间。
//
DELAY _US(1000*500);

//打开LED
//
GPIO写入引脚(Blinky_LED_GPIO,0);

//
//延迟一段时间。
//
DELAY _US(1000*500);

//
//关闭LED
//
GPIO_WritePin (Blinky_LED_GPIO,1);

//
//延迟一段时间。
//
DELAY _US(1000*500);

//

//确认此中断以从组1获得更多信息
//
PieCtrlRegs.PIEACG.ALL = PIEACK_GROUP1;

}
//
//文件结束
//

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

    此链接很好地解释了如何在C中使用宏

    以下是使用它的示例。  我使用了一个小数字,但您可以看到基本的想法。

    #include <MSP430-h>
    #define delay_US (10*5)
    
    
    
    int main(void){
    WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
    PM5CTL0 &=~LOCKLPM2; //禁用GPIO开机默认高阻抗模式
    //以激活先前配置的端口设置
    P1DIR |= 0x01; //将WFP 1.0 设置为输出方向
    
    用于(;;){
    易失性无符号int I; //易失性,以防止优化
    
    P1OUT ^= 0x01; //使用excluse-or切换WFP 1.0
    
    I = DELAY _US; //软件延迟
    我是否--;
    while (I !=0);
    }
    
    返回0;}