[求助] 请各位朋友来帮小弟看看这段代码

luhezhangjian   2011-10-18 22:31 楼主
代码如下:
/  UART初始化
void uartInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_UART1);                  //  使能UART模块
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD);                  //  使能RX/TX所在的GPIO端口
    IntMasterEnable();
    GPIOPinTypeUART(GPIO_PORTD_BASE,                        //  配置RX/TX所在管脚为
                    GPIO_PIN_2 | GPIO_PIN_3);               //  UART收发功能

    UARTConfigSet(UART1_BASE,                               //  配置UART端口
                  9600,                                     //  波特率:115200
                  UART_CONFIG_WLEN_8 |                      //  数据位:8
                  UART_CONFIG_STOP_ONE |                    //  停止位:1
                  UART_CONFIG_PAR_NONE);                    //  校验位:无
   /* UARTFIFOLevelSet(UART0_BASE,       //   设置发送和接收FIFO深度
    UART_FIFO_TX4_8,      //   发送FIFO 为2/8深度(4B)
    UART_FIFO_RX1_8);      //   接收FIFO 为6/8深度(12B)*/
    UARTIntEnable(UART1_BASE,UART_INT_RX);
    IntEnable(INT_UART1);
    IntMasterEnable();
    UARTEnable(UART1_BASE);                                 //  使能UART端口
  
}



void UART1_ISR(void)
{
    unsigned long ulStatus;
    ulStatus=UARTIntStatus(UART1_BASE,true);     //   读取当前中断状态
    UARTIntClear(UART1_BASE,ulStatus);//   清除中断状态
    UARTCharPut(UART1_BASE,'Y');
   
   
   
   
  
}
   
//  主函数(程序入口)
int main(void)
{
    clockInit();                                      //  时钟初始化:晶振,6MHz
    SysCtlPeriEnable(LED_PERIPH);                           //  使能LED所在的GPIO端口
    GPIOPinTypeOut(LED_PORT, LED_PIN);                      //  设置LED所在管脚为输出
    uartInit();                                             //  UART初始化
    for(;;);
}

以上是我写的一段中断接收代码,我用串口调试助手给M3发数据,可是中断处理函数在触发执行一次后就不再触发了 尽管我接着给M3发送数据 可是中断就是触发不了 请大家帮小弟分析分析原因 小弟刚接触M3系列单片机 不胜感激

回复评论 (7)

回复 楼主 luhezhangjian 的帖子

要将接收 FIFO 里的数据读出来。

[ 本帖最后由 Study_Stellaris 于 2011-10-19 09:08 编辑 ]
点赞  2011-10-19 08:59

回复 沙发 Study_Stellaris 的帖子

恩 我照做了 然后就好了 谢谢大侠
点赞  2011-10-19 10:44
我按和你写的一样,为何没有中断啊
点赞  2011-10-19 13:25
大侠,能不能介绍一下,你是如何注册中断的,我现在怀疑我的中断
点赞  2011-10-19 14:01
点赞  2011-10-19 14:05

引用: 原帖由 jinhailu2011 于 2011-10-19 14:01 发表 大侠,能不能介绍一下,你是如何注册中断的,我现在怀疑我的中断

 

不会是忘了在startup.s里注册了吧?

点赞  2011-10-19 15:33

回复 5楼 jinhailu2011 的帖子

你去启动文件startup_ewarm.c 里面注册
方法如下:
首先声明一下你用到的中断处理函数  如:void UART1_ISR(void);

然后在中断函数表中根据注释找到相应的串口1中断函数那行 如:IntDefaultHandler,                              // UART1 Rx and Tx

把这行的IntDefaultHandler,换成UART1_ISR, 然后就注册完成了
点赞  2011-10-20 11:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复