不知道为什么,这个程序进不了中断,这个程序在TI提供的开发套件里有的,在那个工程了可以用,但是我拷贝出来,在自己建个工程,中断无法响应
程序贴出来了,就在下面,感觉程序应该没问题,基本上抄TI的
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "drivers/rit128x96x4.h"
void UARTIntHandler(void)
{
unsigned long ulStatus;
ulStatus = UARTIntStatus(UART0_BASE, true); //获取当前的中断状态。bMasked:如果需要原始的中断状态,
//则 bMasked 为 False;如果需要屏蔽的中断状态,bMasked 就为 True
UARTIntClear(UART0_BASE, ulStatus);// 清除 UART 中断源,这必须在中断处理程序中处理,以防在退出时再次对其进行调用。
RIT128x96x4StringDraw("a1", 12, 56, 15);
while(UARTCharsAvail(UART0_BASE)) //指示接收 FIFO 中是否有可用的数据
{
UARTCharPutNonBlocking(UART0_BASE, UARTCharGetNonBlocking(UART0_BASE)); //将字符 ucData 写入指定端口的发送 FIFO
}
}
void UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
{
while(ulCount--)
{
UARTCharPutNonBlocking(UART0_BASE, *pucBuffer++); // *pucBuffer++=*(pucBuffer++)
// 将字符 ucData 写入指定端口的发送 FIFO
}
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ); //这个函数配置器件的时钟
RIT128x96x4Init(1000000); // 这个函数初始化到 OLED 显示屏的 SSI 接口
RIT128x96x4StringDraw("UART Echo", 36, 0, 15);
RIT128x96x4StringDraw("Port: Uart 0", 12, 16, 15);
RIT128x96x4StringDraw("Baud: 115,200 bps", 12, 24, 15);
RIT128x96x4StringDraw("Data: 8 Bit", 12, 32, 15);
RIT128x96x4StringDraw("Parity: None", 12, 40, 15);
RIT128x96x4StringDraw("Stop: 1 Bit", 12, 48, 15);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); //此函数使能外设。上电时全部的外设都被禁止;
//为了使外设能工作或响应寄存器的读写操作,它们必须被使能。
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
IntMasterEnable(); //允许处理器响应中断
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); //配置管脚供UART外设使用。
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 9600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE
|UART_CONFIG_PAR_NONE)); //此函数将配置 UART 在指定的数据格式下工作
IntEnable(INT_UART0); //指定的中断在中断控制器中被使能。其它的中断使能(例如外设级)不受这个函数的影响。
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT); //UART_INT_RT:接收超时中断;UART_INT_RX:接收中断。
//使能指示的 UART 中断源。只有使能的中断源才能反映为处理器中断;禁止的中断不对处理器产生任何影响。
UARTSend((unsigned char *)"Enter text: ", 12); //通过 UART 端口发送数据。
while(1)
{
}
} |