OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10572|回复: 2

[ALTERA] 请指点!我使用开拓者开发板出现的一个nios串口接收的问题

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-8-27
在线时间
2 小时
发表于 2021-4-22 22:59:12 | 显示全部楼层 |阅读模式
3金钱
我用串口调试助手发送11个字节的信息,开发板只能收到6个或7个,但是最后一个字节又会收到
例如发送:A5 5A 11 83 22 33 44 55 66 77 88
收到的是:A5 5A 11 83 22  88
我的代码就是在正点原子的源代码上修改的,实在发现不了原因,请高手指点

源代码如下:



#include <stdio.h>
#include "unistd.h"
#include "system.h"
#include "alt_types.h"
#include "altera_avalon_uart_regs.h"
#include "sys\alt_irq.h"
#include "stddef.h"
#include "priv/alt_legacy_irq.h"
static alt_u8 txdata = 0;
static alt_u8 rxdata = 0;
static alt_u16 status;
void IRQ_UART_Interrupts();             //中断初始化函数
void IRQ_init();                        //中断服务子程序

int main()
{
    printf("Hello from Nios II!\n");
    IRQ_init();
    return 0;
}

void IRQ_init()
{
    //清除状态寄存器
    IOWR_ALTERA_AVALON_UART_STATUS(UART_BASE,0);
    //使能接受准备好中断,给控制寄存器相应位写1
    IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE,0X80);
        // 注册ISR
        alt_ic_isr_register(
    UART_IRQ_INTERRUPT_CONTROLLER_ID,  // 中断控制器标号,从system.h 复制
    UART_IRQ                        ,  // 硬件中断号,从system.h 复制
        IRQ_UART_Interrupts             ,  // 中断服务子函数
        0x0                             ,  // 指向与设备驱动实例相关的数据结构体
        0x0);                              // flags,保留未用
}

//UART中断服务函数
void IRQ_UART_Interrupts()
{while(1)
                 {

                         IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE, 0x80 | 0x40);    //使能发送中断
                         status=IORD_ALTERA_AVALON_UART_STATUS(UART_BASE);      //读状态寄存器
                         if(status & ALTERA_AVALON_UART_STATUS_RRDY_MSK)
              {


                 {



                     rxdata=IORD_ALTERA_AVALON_UART_RXDATA(UART_BASE);
                     printf("rxdata= %x %x\n", rxdata);
                     IOWR_ALTERA_AVALON_UART_RXDATA(UART_BASE,0x0);//清接收寄存器

                              IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE,0x00);
                      }
                 }
              }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2021-4-25 09:22:49 | 显示全部楼层
你这个功能不是和例程一样吗
回复

使用道具 举报

5

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2020-11-30
在线时间
66 小时
发表于 2021-5-8 11:17:49 | 显示全部楼层
你的中断服务函数怎么能while(1)呢,中断函数要尽量简洁,不要在中断函数里使用打印函数
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 18:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表