对嵌入式十分感兴趣,最近在研究uc/osII,正准备去买块简单的开发版呢,突然在论坛看到了MCU开发板DIY的通知,只希望能申请上,必定把我学习uc/osII的全过程与大家分享!!
   祈祷中。。。
-------------------------------------------------------串口问题求解--------------------------------------------------
  板子终于是焊好了,结果上电后发现电源短路,测试了好久才终于找到问题--电源线在电路板背面USB标示下面那一点和地连到一块了,此中的周折就不细说了吧。高兴地开始一个一个模块地测试,结果第一个串口就被难住了,而且是想了很多方法都解决不了,伤心呀...
  说说我遇到的问题吧,强烈希望大家能给我提点意见,我实在是想不出我这板子的问题出在哪里。
(1)我的电路板能下载程序,这说明串口的基本功能应该没什么大问题。
(2)串口测试代码如下,这程序非常简单,串口波特率为9600,方式三 ,主程序的while循环中用串口反复发送0X11,0X22,0X33,发送过程中依次点亮几个LED指示一下, 当串口接收到第一个数据后停止主动发送,并将接收到的数据重新发送回去。
//串口测试代码
#include<reg52.h>
#define uchar unsigned  char
#define uint unsigned  int
uchar flag = 1;
uchar array[100] = 0;
sbit P17 = P1^7;
void Initial_uart(void)
{
 TMOD = 0X20;//定时器一 自动装入
 TL1 = 0XF9;//9600,24M
 TH1 = 0XF9;
 SCON = 0XD8;//方式三
 PCON = 0X00;//波特率不加倍
 TR1= 1;//启动定时器一
}
void delay( unsigned long i )
{
   int j = 1000;
   for( ;j > 0;j-- )
 {
      for( ;i > 0;i-- )
     {
    i++;
   i--;
  }
 }
}
void serial(void) interrupt 4 using 2
{
 if(RI == 1)
 {
  RI = 0;
  array[89] = SBUF;
  SBUF = array[89];
  while( TI == 0 );
  TI = 0; 
  flag = 0;
 }
}
main()
{
 uchar temp1 = 0x11;
 uchar temp2 = 0x22;
 uchar temp3 = 0x33;
 
 EA = 1;//CPU开中断
 ES = 1;//串口开中断
 flag = 1;//
 Initial_uart();
 P1 = 0xff;
 delay(500);
 P1 = 0xfe;
 while(1)
 {
  
  if(flag == 1)
  {
   
   SBUF = temp1;
   while(TI==0);
   P1 = ~0x01;
   TI=0;
   delay(50000);
   SBUF = temp2;
   while(TI==0);
   P1 = ~0x02;
   TI=0; 
   delay(50000);
   SBUF = temp3;
   while(TI==0);
   P1 = ~0x04;
   TI=0;
   delay(50000);
  }
delay(50000);
 }
}
(3)程序运行起来后,LED闪烁正常且上位机能接收到数据,但是接收到的数据中间总会出现一些错误。例如接收到的数据如下:
11 22 33 11 22 33 11 22 73 11 22 33 11 22 33 11 22 33 11 22 33 11 62 73 11 22 33 11 22 33 11 22 33 11 22 33 11 62 73 11 22 33 11 22 33 11 22 33 11 22 33 1162 73 11 22 33 11 22 33 11 22 33 11 22 33 11 62 33 11 22 33 11 22 33
(4)我的分析:能收到数据,且数据绝大部分正确,数据个数也没有出现异常,这说明串口初始化应该没有错误,故排除软件的错误。但是硬件如果出问题,那为什么可以下载程序?问题可能出在哪里?请大家给我点建议,感激不尽!
---------------------------------------------------------------------------------------------------------------------------

 
					
				
 
			
			
			
						
			 
					
				 
										 
										 
										 
					
				 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

