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.

[参考译文] TM4C1294NCPDT:未生成中断

Guru**** 2553450 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/933954/tm4c1294ncpdt-not-generating-an-interrupt

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: TM4C123

我一直关注 TivaTmTM4C123G LaunchPad 入门讲座,在实验练习4中,它向您展示如何生成中断,但它似乎对我不起作用。 有人知道我在查看此代码时出错了吗?

以下是主代码:

#include
#include
#include "inc/tm4c1294ncpdt.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.h"

int main (空)

uint32_t ui32Period;

SysCtlClockSet (
SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz
| SYSCTL_OSC_MAIN);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_0);

SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICASE);

ui32Period =(SysCtlClockGet ()/10)/2;
TimerLoadSet (TIMER0_BASE、TIMER_A、ui32Period - 1);

IntEnable (INT_TIMER0A);
TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
IntMasterEnable();

TimerEnable (TIMER0_BASE、TIMER_A);

while (1)


空 Timer0IntHandler (空)

//清除计时器中断
TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);

//读取 GPIO 引脚和的当前状态
//写回相反的状态
IF (GPIOPinRead (GPIO_PORTF_BASE、0))

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、1);

其他

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、0);

以下是启动代码:

//
//
//与 TI 的 Code Composer Studio 配合使用的启动代码。
//
//版权所有(c) 2011-2014 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
//软件许可协议
//
//德州仪器(TI)仅提供和使用此软件
//专门用于 TI 的微控制器产品。 该软件归其所有
// TI 和/或其供应商、受适用版权保护
//法律。 您不能将此软件与"病毒"开源软件结合使用
//软件,以便形成一个更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//不作任何明示、暗示或法定的保证,包括但
//不限于对适销性和适用性的暗示保证
//此软件的特定用途。 TI 不得以任何方式进行
//情况,对特殊、偶然或从属事件负责
//任何原因造成的损害。
//
//

#include

//
//
//转发默认故障处理程序的声明。
//
//
void ResetISR (void);
静态空 NmiSR (空);
静态空 FaultISR (空);
静态空 IntDefaultHandler (void);

//
//
//在时要调用的复位处理程序的外部声明
//处理器启动
//
//
extern void _c_int00 (void);
extern void Timer0IntHandler (void);

//
//
//标记栈顶的链接器变量。
//
//
extern uint32_t __stack_top;

//
//
//应用程序使用的中断处理程序的外部声明。
//
//
//由用户添加

//
//
//矢量表。 请注意、必须将适当的构造放置在到上
//确保它在物理地址0x0000.0000或开始处结束
//程序(如果位于0以外的起始地址)。
//
//
#pragma DATA_SECTION (g_pfnVectors、".intvecs")
void (* const g_pfnVectors [])(void)=

(void (*)(void)((uint32_t)&_stack_top)、
//初始堆栈指针
ResetISR、//复位处理程序
NmiSR、// NMI 处理程序
FaultISR、//硬故障处理程序
IntDefaultHandler、// MPU 故障处理程序
IntDefaultHandler、//总线故障处理程序
IntDefaultHandler、//用法故障处理程序
0、//保留
0、//保留
0、//保留
0、//保留
IntDefaultHandler、// SVCall 处理程序
IntDefaultHandler、//调试监视器处理程序
0、//保留
IntDefaultHandler、// PendSV 处理程序
IntDefaultHandler、// SysTick 处理程序
IntDefaultHandler、// GPIO 端口 A
IntDefaultHandler、// GPIO 端口 B
IntDefaultHandler、// GPIO 端口 C
IntDefaultHandler、// GPIO 端口 D
IntDefaultHandler、// GPIO 端口 E
IntDefaultHandler、// UART0 Rx 和 Tx
IntDefaultHandler、// UART1 Rx 和 Tx
IntDefaultHandler、// SSI0 Rx 和 Tx
IntDefaultHandler、// I2C0主设备和从设备
IntDefaultHandler、// PWM 故障
IntDefaultHandler、// PWM 发生器0
IntDefaultHandler、// PWM 发生器1.
IntDefaultHandler、// PWM 发生器2.
IntDefaultHandler、//正交编码器0
IntDefaultHandler、// ADC 序列0
IntDefaultHandler、// ADC 序列1.
IntDefaultHandler、// ADC 序列2.
IntDefaultHandler、// ADC 序列3.
IntDefaultHandler、//看门狗计时器
Timer0IntHandler、//计时器0子计时器 A
IntDefaultHandler、// Timer 0子计时器 B
IntDefaultHandler、//计时器1子计时器 A
IntDefaultHandler、//计时器1子计时器 B
IntDefaultHandler、//计时器2子计时器 A
IntDefaultHandler、//计时器2子计时器 B
IntDefaultHandler、//模拟比较器0
IntDefaultHandler、//模拟比较器1.
IntDefaultHandler、//模拟比较器2.
IntDefaultHandler、//系统控制(PLL、OSC、BO)
IntDefaultHandler、//闪存控制
IntDefaultHandler、// GPIO 端口 F
IntDefaultHandler、// GPIO 端口 G
IntDefaultHandler、// GPIO 端口 H
IntDefaultHandler、// UART2 Rx 和 Tx
IntDefaultHandler、// SSI1 Rx 和 Tx
IntDefaultHandler、//计时器3子计时器 A
IntDefaultHandler、//计时器3子计时器 B
IntDefaultHandler、// I2C1主设备和从设备
IntDefaultHandler、// CAN0
IntDefaultHandler、// CAN1
IntDefaultHandler、//以太网
IntDefaultHandler、// Hibernate
IntDefaultHandler、// USB0
IntDefaultHandler、// PWM 发生器3.
IntDefaultHandler、// uDMA 软件传输
IntDefaultHandler、// uDMA 错误
IntDefaultHandler、// ADC1序列0
IntDefaultHandler、// ADC1序列1.
IntDefaultHandler、// ADC1序列2.
IntDefaultHandler、// ADC1序列3.
IntDefaultHandler、//外部总线接口0
IntDefaultHandler、// GPIO 端口 J
IntDefaultHandler、// GPIO 端口 K
IntDefaultHandler、// GPIO 端口 L
IntDefaultHandler、// SSI2 Rx 和 Tx
IntDefaultHandler、// SSI3 Rx 和 Tx
IntDefaultHandler、// UART3 Rx 和 Tx
IntDefaultHandler、// UART4 Rx 和 Tx
IntDefaultHandler、// UART5 Rx 和 Tx
IntDefaultHandler、// UART6 Rx 和 Tx
IntDefaultHandler、// UART7 Rx 和 Tx
IntDefaultHandler、// I2C2主站和从站
IntDefaultHandler、// I2C3主设备和从设备
IntDefaultHandler、//计时器4子计时器 A
IntDefaultHandler、//计时器4子计时器 B
IntDefaultHandler、//计时器5子计时器 A
IntDefaultHandler、//计时器5子计时器 B
IntDefaultHandler、// FPU
0、//保留
0、//保留
IntDefaultHandler、// I2C4主设备和从属设备
IntDefaultHandler、// I2C5主设备和从设备
IntDefaultHandler、// GPIO 端口 M
IntDefaultHandler、// GPIO 端口 N
0、//保留
IntDefaultHandler、//篡改
IntDefaultHandler、// GPIO 端口 P (摘要或 P0)
IntDefaultHandler、// GPIO 端口 P1
IntDefaultHandler、// GPIO 端口 P2
IntDefaultHandler、// GPIO 端口 P3
IntDefaultHandler、// GPIO 端口 P4
IntDefaultHandler、// GPIO 端口 P5
IntDefaultHandler、// GPIO 端口 P6
IntDefaultHandler、// GPIO 端口 P7
IntDefaultHandler、// GPIO 端口 Q (摘要或 Q0)
IntDefaultHandler、// GPIO 端口 Q1
IntDefaultHandler、// GPIO 端口 Q2
IntDefaultHandler、// GPIO 端口 Q3
IntDefaultHandler、// GPIO 端口 Q4
IntDefaultHandler、// GPIO 端口 Q5
IntDefaultHandler、// GPIO 端口 Q6
IntDefaultHandler、// GPIO 端口 Q7
IntDefaultHandler、// GPIO 端口 R
IntDefaultHandler、// GPIO 端口 S
IntDefaultHandler、// SHA/MD5 0
IntDefaultHandler、// AES 0
IntDefaultHandler、// DES3DES 0
IntDefaultHandler、// LCD 控制器0
IntDefaultHandler、//计时器6子计时器 A
IntDefaultHandler、//计时器6子计时器 B
IntDefaultHandler、//计时器7子计时器 A
IntDefaultHandler、// Timer 7子计时器 B
IntDefaultHandler、// I2C6主设备和从设备
IntDefaultHandler、// I2C7主站和从站
IntDefaultHandler,// HIM 扫描矩阵键盘0
IntDefaultHandler、//单线0
IntDefaultHandler、// HIM PS/2 0
IntDefaultHandler、// HIM LED 序列发生器0
IntDefaultHandler、// HIM Consumer IR 0
IntDefaultHandler、// I2C8主设备和从设备
IntDefaultHandler、// I2C9主设备和从设备
IntDefaultHandler、// GPIO 端口 T
IntDefaultHandler、//风扇1
0、//保留
};

//
//
//这是处理器首次开始执行时调用的代码
//重置事件之后。 仅执行绝对必要的设置、
//在此之后调用应用程序提供的 entry()例程。 任何花哨的东西
//操作(例如根据复位原因寄存器做出决策)、和
//重置该寄存器中的位)只能由控制
//应用。
//
//
无效
ResetISR (空)

//
//跳转到 CCS C 初始化例程。 这将启用
//浮点单元,因此不需要在此处执行此操作。
//
_asm (".global _c_int00\n"
" b.w _c_int00");

//
//
//这是当处理器接收到 NMI 时被调用的代码。 这种情况
//只需进入无限循环,保持系统状态以供检查
//由调试器执行。
//
//
静态空
NmiSR (空)

//
//输入无限循环。
//
while (1)


//
//
//这是处理器收到故障时调用的代码
//中断。 这只是进入一个无限循环、从而保持系统状态
//供调试器检查。
//
//
静态空
FaultISR (空)

//
//输入无限循环。
//
while (1)


//
//
//这是处理器收到意外时调用的代码
//中断。 这只是进入一个无限循环、从而保持系统状态
//供调试器检查。
//
//
静态空
IntDefaultHandler (空)

//
//进入无限循环。
//
while (1)


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

    您好!

     请参阅下面的 lab4解决方案。  

    #include 
    #include 
    #include "inc/tm4c123gh6m.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/gpio.h"
    #include "driverlib/timer.h"
    
    
    {invoid (main)
    uint32_t ui32Period;
    
    SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
    TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICASE);
    
    ui32Period =(SysCtlClockGet ()/10)/2;
    TimerLoadSet (TIMER0_BASE、TIMER_A、ui32Period -1);
    
    IntEnable (INT_TIMER0A);
    TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
    IntMasterEnable();
    
    TimerEnable (TIMER0_BASE、TIMER_A);
    
    while (1)
    {
    }
    }
    
    空 Timer0IntHandler (空)
    {
    //清除计时器中断
    TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);
    
    //读取 GPIO 引脚和的当前状态
    //写回相反的状态
    IF (GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_2))
    {
    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3、0);
    }
    其他
    {
    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、4);
    }
    } 

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

    TM4C1294NCPDT:未生成中断"

    首先确定您认为自己有问题的原因-事实上您有问题-可能是有道理的。 aka 帮助他人帮助您。

    在这种情况下、很容易确认:如果您有调试器、只需查看您是否会进入您认为丢失的中断。

    一种更简单的方法是翻转 ISR 中的引脚。 看看您是否可以观察到这一点。

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

    我遵循了这个确切的代码、只是我的器件的 LED 引脚位于不同的区域、所以我只更改了这些引脚、但我不确定是否必须更改其他任何内容。 我知道我有 LED 代码、因为我能够在没有中断的情况下刷写它。 我无意中说过,这已经解决了,但还没有解决

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

    老实说、我真的不熟悉中断、我只认为它不起作用、因为当教程说应该时、我的 LED 不会闪烁。

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

    代码的问题在于、您所使用的实验课程主要针对 TM4C123器件、而不是 TM4C129器件。  对于 TM4C129、使用 SysCtlClockSet 来配置时钟的方式不正确。 请参阅以下我从您那里修改过的代码。 详细信息、请参考外设驱动程序库用户指南、其中指出 SysCtlClockSet 只用于 TM4C123器件。  

    int main (void)
    {
    uint32_t ui32Period;
    
    G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);
    
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_0);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
    TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICASE);
    
    ui32Period =(g_ui32SysClock / 10)/2;
    TimerLoadSet (TIMER0_BASE、TIMER_A、ui32Period - 1);
    
    IntEnable (INT_TIMER0A);
    TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
    IntMasterEnable();
    
    TimerEnable (TIMER0_BASE、TIMER_A);
    
    while (1)
    {
    }
    }
    
    空 Timer0IntHandler (空)
    {
    //清除计时器中断
    TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);
    
    //读取 GPIO 引脚和的当前状态
    //写回相反的状态
    IF (GPIOPinRead (GPIO_PORTF_BASE、GPIO_PIN_0))
    {
    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、0);
    }
    其他
    {
    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、GPIO_PIN_0);
    }
    }
    

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

    这起作用了。 谢谢!