搜索
bottom↓
回复: 6

求一操作寄存器的NIOSII串口接收发送程序

[复制链接]

出0入0汤圆

发表于 2010-5-22 11:44:06 | 显示全部楼层 |阅读模式
void Uart_send(unsigned char data)
{
alt_u16 status;
status=IORD_ALTERA_AVALON_UART_STATUS(UART_BASE);
while(!(status&0x0040))//等待发送完成
status=IORD_ALTERA_AVALON_UART_STATUS(UART_BASE);
IOWR_ALTERA_AVALON_UART_TXDATA(UART_BASE,data);
}
这样的 网上找了个有些问题

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-5-22 13:57:45 | 显示全部楼层
#include <unistd.h>                     // UNIX API
#include <fcntl.h>                      // UNIX API
#include <stdio.h>                      // printf()
#include <string.h>                     // strlen()
#include "alt_types.h"

//++++++++++++++++++++++++++++++++++++++
// 修改UART名称 开始
// 根据SOPC Builder设置修改
//++++++++++++++++++++++++++++++++++++++
#include "system.h"

#define my_uart_name UART_NAME
//--------------------------------------
// 修改UART名称 开始
//--------------------------------------

#define CHAR_NUM 8
  
int main()
{
  int fd;
  alt_u8 *ptr;
  alt_u8 charBuf[100];                  // 100字节的字符缓存
  alt_u8 num_temp1, num_temp2;          // 临时变量
  alt_u8 *msg1 = "Please Enter 8 charaters : ";
  alt_u8 *msg2 = " has been Rcved\n";  
  
  //++++++++++++++++++++++++++++++++++++
  // 初始化 开始
  //++++++++++++++++++++++++++++++++++++
  ptr       = charBuf;                  // 指向字符缓冲区
  num_temp2 = CHAR_NUM;                 // 欲读入CHAR_NUM个字符
  num_temp1 = num_temp2;
  //-----------------------------------
  // 初始化 结束
  //-----------------------------------   
  
  //++++++++++++++++++++++++++++++++++++
  // 打开UART 开始
  //++++++++++++++++++++++++++++++++++++
  fd = open(my_uart_name, O_RDWR, 0666);   // 以可读写方式打开设备文件
  if (fd < 0)                           // 如果打开失败
  {
     printf("error\n ");
     return 1;
  }
  //------------------------------------
  // 打开UART 结束
  //------------------------------------

  //++++++++++++++++++++++++++++++++++++
  // 输出msg1 开始
  //++++++++++++++++++++++++++++++++++++
  write(fd, msg1, strlen(msg1));
  //------------------------------------
  // 输出msg1 结束
  //------------------------------------

  //++++++++++++++++++++++++++++++++++++
  // 读取CHAR_NUM个ASCII码字符 开始
  //++++++++++++++++++++++++++++++++++++
  while(num_temp1)                         // 读取CHAR_NUM个ASCII码字符
  {
    num_temp2  = read(fd, ptr, num_temp2);
    ptr       += num_temp2;
    num_temp1 -= num_temp2;
    num_temp2  = num_temp1;
  }
  //------------------------------------
  // 读取CHAR_NUM个ASCII码字符 结束
  //------------------------------------  
  
  //++++++++++++++++++++++++++++++++++++
  // 输出读入字符和msg2 开始
  //++++++++++++++++++++++++++++++++++++
  write(fd, charBuf, 8);                // 输出读入字符
  write(fd, msg2, strlen(msg2));        // 输出msg2
  //------------------------------------
  // 输出读入字符和msg2 结束
  //------------------------------------  

  //++++++++++++++++++++++++++++++++++++
  // 关闭UART 开始
  //++++++++++++++++++++++++++++++++++++
  close(fd);                            // 关闭设备
  //------------------------------------
  // 关闭UART 结束
  //------------------------------------
  
  return 0;
}

出0入0汤圆

 楼主| 发表于 2010-5-22 14:08:55 | 显示全部楼层
谢谢 这个太高级了

我要这样的
void Uart_send(unsigned char data)
{
alt_u16 status;
status=IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);
while(!(status&0x0040))//等待发送完成  
status=IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);
IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE,data);
}

出0入0汤圆

发表于 2010-5-22 17:46:45 | 显示全部楼层
回复【2楼】40130064  
-----------------------------------------------------------------------

无语。

出0入0汤圆

发表于 2010-5-22 18:01:39 | 显示全部楼层
可以看看我的博客,上面有,kingst.cnblogs.com

出0入0汤圆

 楼主| 发表于 2010-5-24 11:00:33 | 显示全部楼层
回复【4楼】avic
-----------------------------------------------------------------------

相当历害,收我为徒吧

出0入0汤圆

 楼主| 发表于 2010-5-24 16:01:01 | 显示全部楼层
回复【4楼】avic
-----------------------------------------------------------------------

老大上个源程序吧 我调了一下物 通是能通过了 不发数据 没反应啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 17:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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