#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include <stdbool.h>
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
uint32_t g_ui32SysClock;
#ifdef DEBUG
void
__error__(char *pcFilename, uint32_t ui32Line)
{
}
#endif
void
__error__(char *pcFilename, uint32_t ui32Line)
{
}
#endif
void
UARTIntHandler(void)
{
uint32_t ui32Status;
UARTIntHandler(void)
{
uint32_t ui32Status;
ui32Status = UARTIntStatus(UART0_BASE, true);
UARTIntClear(UART0_BASE, ui32Status);
while(UARTCharsAvail(UART0_BASE))
{
UARTCharPutNonBlocking(UART0_BASE,
UARTCharGetNonBlocking(UART0_BASE));
{
UARTCharPutNonBlocking(UART0_BASE,
UARTCharGetNonBlocking(UART0_BASE));
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0, GPIO_PIN_0);
}
}
}
void
UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
while(ui32Count–)
{
UARTCharPutNonBlocking(UART0_BASE, *pui8Buffer++);
}
}
UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
while(ui32Count–)
{
UARTCharPutNonBlocking(UART0_BASE, *pui8Buffer++);
}
}
main(void)
{
g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480), 120000000);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
{
g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480), 120000000);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
IntMasterEnable();
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk(UART0_BASE, g_ui32SysClock, 115200,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
IntEnable(INT_UART0);
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
UARTSend((uint8_t *)"\033[2JEnter text: ", 16);
while(1)
{
}
}
{
}
}
xyz549040622:
你是如何测试的了?怎么知道中断进不去,发了几个数据给串口了?
user5349949:
回复 xyz549040622:
插上板子测试的 正常的话发了数据进入中断 会点亮一个灯 但板子没反应
xyz549040622:
回复 user5349949:
根据你fifo的大小决定的,多发几个数据看看,最大16个数据。还有,你中断向量表添加了没有。
user5349949:
回复 xyz549040622:
试了下还是不行 我又找了个例程的代码 例程的时候还是好的 但加到我自己的工程里面就进不去,知道为什么吗?
xyz549040622:
回复 user5349949:
看看你的启动文件是如何设计的,里面如何写的呢?
HG:
回复 xyz549040622:
你的中断向量和对应的中断入口函数映射对了么?