智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1147|回复: 1
打印 上一主题 下一主题

新手求教

[复制链接]

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
83
威望
144
贡献
29
兑换币
0
注册时间
2011-11-28
在线时间
0 小时
跳转到指定楼层
1#
发表于 2011-11-28 16:24:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始学飞思卡尔,正在搞串口通讯,可是貌似有点问题,向大家请教下!
char a='m';
unsigned char SciRead()
{
   if(SCI0SR1_RDRF==1)//表明数据从位移寄存器传输到SCI数据寄存器
   {
   SCI0SR1_RDRF=1; //读取数据寄存器会将RDRF清除   重新置位
   return SCI0DRL;
  }
}
void SciWrite(char data )
{
  while(!(SCI0SR1&0X80));
  SCI0DRH=0;
  SCI0DRL=data;
}
void main()
{
    PLL_init();
    SCI_init();
    EnableInterrupts;
    while(1){
      if(Inter_Flag==1){
        SciWrite(a);
        Inter_Flag=0;
      }
              
    }
      
    for(;;)
     {
   
    }
}
#pragma CODE_SEG NON_BANKED
void interrupt 20 SCI(void)
{   
    ch=SciRead();
    Inter_Flag=1;
   
}
我想在串口调试助手上发送任意数据,单片机就开始发送‘m',可是收到的都是“I",不知道为什么 啊?好像不是波特率的问题吧!我用SciWrite(ch);然后用十六进制发送就可以显示我发送的数!请教啊!

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
83
威望
144
贡献
29
兑换币
0
注册时间
2011-11-28
在线时间
0 小时
2#
 楼主| 发表于 2011-11-29 12:12:37 | 只看该作者
现在发现,改成发送一个字符,接收一个字符,然后就是就发一串接收来的前几个是乱码,接下来的都是正确的 了,请问是不是波特率设置的问题啊!?我算了下,好像飞思卡尔的总线频率算出来的都是9615啊!
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-2-25 19:04 , Processed in 0.081586 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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