3215|7

45

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请各位朋友来帮小弟看看这段代码 [复制链接]

代码如下:
/  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系列单片机 不胜感激

最新回复

  不会是忘了在startup.s里注册了吧?  详情 回复 发表于 2011-10-19 15:33
 
点赞 关注

回复
举报

1803

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

回复 楼主 luhezhangjian 的帖子

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

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

回复

45

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 Study_Stellaris 的帖子

恩 我照做了 然后就好了 谢谢大侠
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

4
 
我按和你写的一样,为何没有中断啊
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

5
 
大侠,能不能介绍一下,你是如何注册中断的,我现在怀疑我的中断
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

6
 
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

7
 

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

 

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

 
 
 

回复

45

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 5楼 jinhailu2011 的帖子

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

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

把这行的IntDefaultHandler,换成UART1_ISR, 然后就注册完成了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表