⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.txt

📁 NIOSII的串口通讯源程序
💻 TXT
字号:
NIOS II的 UART 
     NIOS II的UART 与通用串口兼容,用于可以设置自己的需求通信模式,比如波特率 奇偶校验 停止位 数据位和其他控制信号
     主要的寄存器有: txdata,rxdata,status control divisor endof packet,串口要说的东西其实不是很多,但是其确有很多很多的位定义,比如irrdy itrdy等等发送接受传输和错误检测等控制位,这里就不一一列出了,太多了,用的东西在NIOS中看名字大概也能看出来.具体见头文件 
       #i nclude "altera_avalon_uart_regs.h"
下面是我曾经用过的一个UART通信中断程序
int handle_uart_interrupts(void* context, alt_u32 id)
{  
  FILE *uart_file;
  uart_file=fopen("/dev/uart_0","r+");
  if (uart_file == NULL)
  {
    printf("can't open uart_device!");
    return 0 ;
  }
  uart_buf[k++]=IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE);
  if(uart_buf[k-1]=='f')
  {
    char search[20] = "s ";
    uart_buf[k-1]='\0';
    k=0;
    //printf("串口%s ", uart_buf);
    if (cur_panel.id == 0) 
    {
      search[0] = 'c';
      if (strlen(uart_buf) == 2)
      {
        search[2] = '0';
        search[3] = '\0';
      }
    }
    if (strlen(uart_buf) == 6)
    {
        search[2] = '9';
        search[3] = '\0';
      }
    strcat(search, uart_buf);
    strcpy(sendbuf, search);
     }
  fclose(uart_file);
  return 0;
}
仔细看看上面的程序,并与头文件 #i nclude "altera_avalon_uart_regs.h"中所定义的可用寄存器比较一下会发现,上述写法并不可取,上述程序接受数据是字符的依次读入,其实可以在控制位和发送接受寄存器的配合下,则可以很高效的写出通信程序,而不必像上面那样显得有点"笨".
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -