3814|3

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教有关atmel的at91sam7的串口程序问题。 [复制链接]

void Usart_init ( void )

{
    COM0= AT91C_BASE_US1;
    //* Define RXD and TXD as peripheral
    // Configure PIO controllers to periph mode
     AT91F_PIO_CfgPeriph(
         AT91C_BASE_PIOA,
         ((unsigned int) AT91C_PA21_RXD1    ) |
         ((unsigned int) AT91C_PA22_TXD1    ) , // Peripheral A功能使能
         0 ); // Peripheral B

    //* First, enable the clock of the PIOB
    AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<
    //* Usart Configure
    AT91F_US_Configure (COM0, MCK,AT91C_US_ASYNC_MODE,USART_BAUD_RATE , 0);

    //* Enable usart
    COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;

    //* open Usart interrupt
    AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_US1,   
                           USART_INTERRUPT_LEVEL,
                           AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,  
                           Usart_c_irq_handler);
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US1);
    // Set the PDC
    AT91F_PDC_Open (AT91C_BASE_PDC_US1);
    COM0->US_RPR = (unsigned int) SciRxBuf;
    COM0->US_RCR = 100;
    first = 0;
    COM0->US_RTOR = 0;//不检测超时
    COM0->US_IER =AT91C_US_RXRDY ;//串口中断采用rxrdy中断
//* End
}

现在的问题是,初始化后,并不能进入串口中断程序 Usart_c_irq_handler(),而接受数组SCIRXBUF显示每次都收到了一个完整的数据包,比如串口发送400202bc,在串口中断程序中打了断点,并无法进去,但是每次scirxbuf都收到了400202bc这几个数据。后来我把rxrdy中断改为rxbuff中断,即将COM0->US_IER =AT91C_US_RXRDY ;改为COM0->US_IER =AT91C_US_RXBUFF ;却可以进入 Usart_c_irq_handler()中断程序。谁碰到过类似的情况啊?

最新回复

代码问题 初始化参数错了 AT91F_US_Configure 带的参数不对 什么同步异步的 看好了  详情 回复 发表于 2008-11-24 16:56
点赞 关注

回复
举报

55

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
居然没有人回答,呜呜呜。我也有问题,不能进中断。
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你既然用了PDC,还想着用RXRDY来引发中断?你还是先把AT91SAM7S的Datasheet好好看懂,着重看PDC部分。另外,通常使用USART的时候RTOR是肯定用的,你不会希望整个buffer全部填满了你才知道收到数据了吧。

楼上的,你最好先看看你的代码AIC配置部分有没有问题。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
代码问题 初始化参数错了
AT91F_US_Configure 带的参数不对 什么同步异步的 看好了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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