打印

你帮忙解答疑问吗,关于8962串口和中断

[复制链接]
1461|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lfzhou1006|  楼主 | 2011-10-6 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道为什么,这个程序进不了中断,这个程序在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)
    {
    }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

340

帖子

1

粉丝