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/MSP432P401R:未定义 NVIC

Guru**** 2618835 points

Other Parts Discussed in Thread: CODECOMPOSER

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/674648/ccs-msp432p401r-nvic-not-defined

器件型号:MSP432P401R

工具/软件:Code Composer Studio

这是我第一次在 MSP432上使用中断、我已经执行了每一步(更改设置文件、在代码中启用中断等)。 当我尝试在 CodeComposer 中构建代码时、我收到一个未定义 NVIC 的错误。 我已经尝试了所有东西、但我不知道如何更改。 如果你能帮助我,我将非常感激。

#include 
#include 


// LED1 @ P1.0
//按钮 S1 @ P1.1


volatile uint8_t button_flag = 0; //标记到信号按钮按
volatile uint32_t deb_cnt; //用于去抖按钮


void main 的计数器(void)
{
WDTCTL =(WDTPW | WDTHOLD); //停止看门狗计时器

P1SEL0 = 0x00; //清除端口1
P1SEL1 = 0x00的选择寄存器0; //清除端口1

P1REN = 0x02的选择寄存器1; S1 (P1.1)
P1OUT = 0x02时的//使能电阻; // S1 (P1.1)高电平->上拉电阻器、其他低
电平 P1DIR = 0x01; // LED1 (P1.0)到输出方向、其它输入

P1IES = 0x02; // S1 (P1.1)
P1IFG = 0x00时高电平->低电平转换时的中断; //清除任何挂起标志
P1IE = 0x02; //启用 S1 (P1.1)

NVIC_ISER1 = 1 <<((INT_Port1 - 16)& 31)的中断; //为 NVIC 模块

__ENABLE_INTERRUPT ()中的端口1启用中断; //启用全局中断

while (1) //无限循环-主程序
{
if (button_FLAG)
{
P1OUT ^= 0x01; //切换 LED1 (P1.0)
for (deb_cnt = 0;deb_cnt < 20000;deb_cnt++); //去抖按钮的软件延迟-不在实际程序中使用
button_flag = 0; //复位标志
P1IFG &=~0x02; //清除 S1 (P1.1)的挂起中断标志
P1IE |= 0x02; //为 S1 (P1.1)启用中断
}
}



void port1_ISR_handler (void) //端口1的中断处理程序
{
P1IE &=~0x02; //禁用 S1 (P1.1)的去抖中断
button_flag = 1; //将标志设置为检测到信号按钮按压
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    路易斯、
    您是否曾尝试安装并导入 SDK? www.ti.com/.../SIMPLELINK-MSP432-SDK

    我想到的是这个例子:
    C:\ti\simplelink_msp432p4_sdk_2_10_00_14\examples\nortos\MSP_EXP432P401R\registerLevel \msp432p401x_P1_03

    dev.ti.com/.../

    此致、
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    >NVIC_ISER1 = 1 <<(INT_Port1 - 16)& 31); //为 NVIC 模块中的端口1启用中断

    我早就失去了直接操作 NVIC 寄存器(括号太多)的耐心、而我更喜欢这样的操作:

    > NVIC_EnableIRQ (Port1_IRQn);

    它是 CMSIS、内联、几乎总是使用常量进行调用、因此它将尽可能小。