[ARM7] ARM7串口通信时写的程序出了点问题,不能通信,求指导

[复制链接]
2176|14
 楼主| 你好陌生人 发表于 2013-9-17 11:01 | 显示全部楼层 |阅读模式
  1. #define                ADS1605_Data                0x0003FFFC        //ADS1605数据
  2. uint32  Rcv_ADData ;                        // 接收的AD转换的二进制数据
  3. uint32   Sed_ADData ;                        // 发送的AD十进制数据
  4. uint8   ADData[]   ;

  5. //向串口发送字节数据
  6. void SendByte(char dat)
  7. {
  8.         U0THR = dat;
  9.         while((U0LSR& 0X40) == 0);
  10. ;
  11. }

  12. //发送字符串
  13. void  SendStr(char *Str)
  14. {   
  15.   while((*Str)!='\0')
  16.   {
  17.     SendByte(*Str);
  18.     Str++;
  19.   }
  20. }

  21. //下面是主程序里面的一段

  22. Rcv_ADData = IO0PIN & ADS1605_Data;   //从gpio口读出数据
  23. Sed_ADData = (Rcv_ADData >> 2)/4;        //将数据右移两位后转换成十进制数据                       
  24. printf(ADData,"%c",Sed_ADData);       //使用标准输入输出函数将数据发送
  25. SendStr(ADData) ;                        串口发送
上面是程序的部分,现在就是最后两句行不通,用的是ads开发环境,不知道能不能用标准输入输出函数,我包含了#include  "stdio.h"头文件,Sed_ADData是十进制数据,但是最后怎么用SendStr(char *Str)发送字符串函数发送,搞不明白,最后两句在IAR编译环境是可以实现的。
 楼主| 你好陌生人 发表于 2013-9-17 11:52 | 显示全部楼层
难道每次二楼都是我吗   ?求指导啊
杨爱林林 发表于 2013-9-18 08:22 | 显示全部楼层
干嘛要用printf  
你这函数写的没问题啊
 楼主| 你好陌生人 发表于 2013-9-18 15:38 | 显示全部楼层
杨爱林林 发表于 2013-9-18 08:22
干嘛要用printf  
你这函数写的没问题啊

我现在主要不知道怎么用SendStr函数把Sed_ADData数据发送出去   以前见过的别人用标准输入输出这样写就可以,我就借鉴了一下,SendStr函数是发送的字符串,但是Sed_ADData是十进制数,不知道能不能直接发送啊
 楼主| 你好陌生人 发表于 2013-9-18 15:51 | 显示全部楼层
杨爱林林 发表于 2013-9-18 08:22
干嘛要用printf  
你这函数写的没问题啊

SendStr的入口参数是一个指针,Sed_ADData是一个变量,怎么样才能发送啊   刚才试了一下   不行的
杨爱林林 发表于 2013-9-18 16:32 | 显示全部楼层
当然不行啦  
SendStr 是发送字符串
你要想发送Sed_ADData,就把Sed_ADData 放到一个数组里面,比如 Send_Buf[]
发送Send_Buf 就好了
杨爱林林 发表于 2013-9-18 16:40 | 显示全部楼层
你的发送字符串 应该加个长度 比较好
void SendStr(char *Str,char byte_num)
{
char num = byte_num;
char index = 0;

memcpy(Send_Buf,Str,num);
for(index=0;index<num;index++)
{
  SendByte(Send_Buf[index]);
}
}
 楼主| 你好陌生人 发表于 2013-9-18 16:48 | 显示全部楼层
杨爱林林 发表于 2013-9-18 16:32
当然不行啦  
SendStr 是发送字符串
你要想发送Sed_ADData,就把Sed_ADData 放到一个数组里面,比如 Send_B ...

怎么放进去啊
杨爱林林 发表于 2013-9-18 16:52 | 显示全部楼层
额 给数组赋值 你还不会吗
赶紧补c基础:lol
 楼主| 你好陌生人 发表于 2013-9-18 16:59 | 显示全部楼层
杨爱林林 发表于 2013-9-18 16:40
你的发送字符串 应该加个长度 比较好
void SendStr(char *Str,char byte_num)
{


Warning : C2207W: inventing 'extern int memcpy();'

这个是编译后的警告,加的长度要多长时不确定的,这个程序就是通过GPIO口将16位AD的转换结果通过串口发送出去,AD转换后的数据长度是不确定的啊,
现在就是想把Sed_ADData放到数组里面,这样就可以用SendStr发送了
 楼主| 你好陌生人 发表于 2013-9-18 17:00 | 显示全部楼层
杨爱林林 发表于 2013-9-18 16:52
额 给数组赋值 你还不会吗
赶紧补c基础

学的不好啊 :'(  求推荐一本书
杨爱林林 发表于 2013-9-19 19:15 | 显示全部楼层
一般发送函数都是 void SendStr(char *Str,char byte_num) 这种格式的
方便调用
杨爱林林 发表于 2013-9-19 19:16 | 显示全部楼层
多写写小程序 然后再调试通过就好啦  顶住
 楼主| 你好陌生人 发表于 2013-9-23 11:10 | 显示全部楼层
杨爱林林 发表于 2013-9-19 19:15
一般发送函数都是 void SendStr(char *Str,char byte_num) 这种格式的
方便调用

恩  主要是我的数据位数是不确定的   我也不知道发送多少:P,现在在做毕业设计   好多不懂  
 楼主| 你好陌生人 发表于 2013-9-23 11:10 | 显示全部楼层
杨爱林林 发表于 2013-9-19 19:16
多写写小程序 然后再调试通过就好啦  顶住

恩   顶的住
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

152

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部