2690|0

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

7X256 UART0中断的问题 [复制链接]

请帮忙看看,我的uart0串口中断程序哪里错在哪里?按理说只要收到一个字节就应该进中断,可调试过程中只能进一次中断而且收到的数据不对,请大家指点。

  void US0_handler (void)  
{
  unsigned short status,data;
  status = AT91C_BASE_US0->US_CSR;

    // Receive buffer is full
    if ((status & AT91C_US_RXRDY) == AT91C_US_RXRDY)
 {
   data = AT91C_BASE_US0->US_RHR;
 }
}

void AIC_ConfigureIT(
    unsigned int source,
    unsigned int mode,
    void (*handler)(void))
{
    // Disable the interrupt first
    AT91C_BASE_AIC->AIC_IDCR = 1 << source;

    // Configure mode and handler
    AT91C_BASE_AIC->AIC_SMR[source] = mode;
    AT91C_BASE_AIC->AIC_SVR[source] = (unsigned int) handler;

    // Clear interrupt
    AT91C_BASE_AIC->AIC_ICCR = 1 << source;
}

//------------------------------------------------------------------------------
/// Enables interrupts coming from the given (unique) source (AT91C_ID_xxx).
/// \param source  Interrupt source to enable.
//------------------------------------------------------------------------------
void AIC_EnableIT(unsigned int source)
{
    AT91C_BASE_AIC->AIC_IECR = 1 << source;
}

void init_uart0(unsigned short Baudrate)
{
 
 AT91F_PMC_EnablePeriphClock (AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
    AT91F_PMC_EnablePeriphClock (AT91C_BASE_PMC, 1 << AT91C_ID_US0);
 AT91F_PMC_EnablePeriphClock (AT91C_BASE_PMC, 1 << AT91C_ID_US0);
 AT91F_US0_CfgPIO(); //配置串口端口

 AT91F_US_Configure (
  AT91C_BASE_US0,
  MCK,                                  // Master Clock
  AT91C_US_USMODE_NORMAL| AT91C_US_CLKS_CLOCK| AT91C_US_CHRL_8_BITS| AT91C_US_PAR_NONE| AT91C_US_NBSTOP_1_BIT
                        | AT91C_US_CHMODE_NORMAL , // mode Register to be programmed
  Baudrate ,                              // baudrate to be programmed
  0);    
  // Configure the RXBUFF interrupt
    AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_US0,7\
      ,AT91C_AIC_SRCTYPE_POSITIVE_EDGE,(void(*)())US0_handler ); 
    AIC_EnableIT(AT91C_ID_US0);
 // Enable Transmitter
 AT91F_US_EnableTx(AT91C_BASE_US0);
 AT91F_US_EnableRx(AT91C_BASE_US0);
 
 
 AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_US0);
       
       AT91C_BASE_US0->US_IER = AT91C_US_RXRDY;
}

此帖出自单片机论坛
点赞 关注
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 

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

随便看看
查找数据手册?

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-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表