主题中讨论的其他器件: TM4C123
我一直关注 TivaTM4C123G 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)
{
}
}