查看: 6808|回复: 29

MC9S08DZ60串口问题(已解决!)

[复制链接]

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
发表于 2015-7-22 09:01:22 | 显示全部楼层 |阅读模式
本帖最后由 xiaoming1021 于 2015-7-24 14:06 编辑


单片机向电脑发送数据,这时,电脑再向单片机发送数据的时候单片机就会工作异常串口无法发送和接收数据。单独发送和接收是没有问题的。

评分

参与人数 1NXP金币 +5 收起 理由
小七 + 5 打赏!

查看全部评分

回复

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-22 11:03:33 | 显示全部楼层
/*****************串口接收中断*************************************/
void interrupt VectorNumber_Vsci1rx  SCI_RE(void) {

    while(SCI1S1_RDRF)   
         RxBuf[RxIndex]=SCI1D;
    SCI1S1_RDRF=0;
    RxIndex++;
    if(RxIndex == LEN){
      RxIndex = 0;
    }

}
/*********************SCI_INIT函数************************************/
void SCI_INIT(void) {  
  
    SCI1BD =8000000/16/scibandrate;
    SCI1C1=0x00;
    SCI1C2=0x2C;//使能接受中断

}
      while(SCI1S1_TDRE) {

          SCI1S1_TDRE=0;
         
          DELAY(100);

          SCI1D=0x55;
   
      }/**/
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-22 11:04:17 | 显示全部楼层
xiaoming1021 发表于 2015-7-22 11:03
/*****************串口接收中断*************************************/
void interrupt VectorNumber_Vsc ...

程序主体是这个样子
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-7-22 13:50:51 | 显示全部楼层
具体异常是什么样呢?
还有你说的单独发送和接收是指的PC机呢,还是MCU?
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-22 14:12:27 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-7-22 13:50
具体异常是什么样呢?
还有你说的单独发送和接收是指的PC机呢,还是MCU?

MCU向PC机发送数据的过程中,我在用PC向MCU发送数据,发几条数据MCU就接收不到消息。硬件debug就会跳出来。最后程序指向INIT_SP_FROM_STARTUP_DESC();
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-22 14:23:03 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-7-22 13:50
具体异常是什么样呢?
还有你说的单独发送和接收是指的PC机呢,还是MCU?

单独发就是MUC向PC发送数据这个过程PC不向MCU发送数据。或PC向MCU发送数据,MCU不向PC发送数据。这样是不出现错误的。
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

122

帖子

2

高级会员

Rank: 4

积分
777
最后登录
2023-9-6
发表于 2015-7-22 21:54:14 | 显示全部楼层
执行SCI1D=0x55;  后,SCI1S1_TDRE变成0,while(SCI1S1_TDRE) {}循环体不会再执行
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 09:10:17 | 显示全部楼层
figc53 发表于 2015-7-22 21:54
执行SCI1D=0x55;  后,SCI1S1_TDRE变成0,while(SCI1S1_TDRE) {}循环体不会再执行

我的PC机是不断的发送数据的
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-7-23 09:19:55 | 显示全部楼层
SCI串口通信是支持全双工的,但是7楼指出你代码中的疑问,同时我想问一下INIT_SP_FROM_STARTUP_DESC()是什么函数,是有点像hard fault中断函数吗?
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

266

帖子

0

高级会员

Rank: 4

积分
747
最后登录
2023-5-24
 楼主| 发表于 2015-7-23 10:27:41 | 显示全部楼层
FSL_TICS_ZP 发表于 2015-7-23 09:19
SCI串口通信是支持全双工的,但是7楼指出你代码中的疑问,同时我想问一下INIT_SP_FROM_STARTUP_DESC()是什 ...

这个就是一个宏指向堆栈指针和堆栈段结束。和这个关系不大。现在是我将MCU接收到的PC数据在发给PC。可以发几句然后就突然停止了。不能在发送了。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-3 01:19 , Processed in 0.105297 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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