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

2019-03-24 15:36发布

不知道为什么,这个程序进不了中断,这个程序在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)
    {
    }
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
David_Lee
2019-03-25 11:47

原帖由 jensenhero 于 2011-9-28 16:37 发表 不知道为什么,这个程序进不了中断,这个程序在TI提供的开发套件里有的,在那个工程了可以用,但是我拷贝出来,在自己建个工程,中断无法响应程序贴出来了,就在下面,感觉程序应该没问题,基本上抄TI的 #include ...

 

哈哈,我跟楼主是同道中人,第一次用M3的中断的时候,老觉得怪怪的,51还有个中断号啥的表示中断函数,M3就那么智能,跟普通函数那样写就可以用了?后来才知道原来是Startup.s里面定义了中断向量、中断函数那些。例:

 

;******************************************************************************
;
; External declaration for the interrupt handler used by the application.
;
;******************************************************************************
        EXTERN  UARTIntHandler

;******************************************************************************
;
; The vector table.
;
;******************************************************************************
        EXPORT  __Vectors
__Vectors
        DCD     StackMem + Stack            ; Top of Stack
        DCD     Reset_Handler               ; Reset Handler
        DCD     NmiSR                       ; NMI Handler
        DCD     FaultISR                    ; Hard Fault Handler
        DCD     IntDefaultHandler           ; The MPU fault handler
        DCD     IntDefaultHandler           ; The bus fault handler
        DCD     IntDefaultHandler           ; The usage fault handler
        DCD     0                           ; Reserved
        DCD     0                           ; Reserved
        DCD     0                           ; Reserved
        DCD     0                           ; Reserved
        DCD     IntDefaultHandler           ; SVCall handler
        DCD     IntDefaultHandler           ; Debug monitor handler
        DCD     0                           ; Reserved
        DCD     IntDefaultHandler           ; The PendSV handler
        DCD     IntDefaultHandler           ; The SysTick handler
        DCD     IntDefaultHandler           ; GPIO Port A
        DCD     IntDefaultHandler           ; GPIO Port B
        DCD     IntDefaultHandler           ; GPIO Port C
        DCD     IntDefaultHandler           ; GPIO Port D
        DCD     IntDefaultHandler           ; GPIO Port E
        DCD     UARTIntHandler              ; UART0 Rx and Tx
        DCD     IntDefaultHandler           ; UART1 Rx and Tx

一周热门 更多>

相关问题

    相关文章