OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4051|回复: 1

求助帖,请大佬们帮忙看看,msp430F149芯片,串口通讯发送数据异常

[复制链接]

2

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-3-12
在线时间
6 小时
发表于 2019-4-4 15:41:10 | 显示全部楼层 |阅读模式
10金钱
我用430进行AD采集后,对模拟电压信号进行处理后,要输出相应的数字信号,但是我通过串口发送电脑上,发送出来的值是正常的,但是它一直像图上这种,是以两个两个或者三个一组发出来的,我想要的是一个一个发出来,请大佬指导下,我的程序哪里出问题了,要怎么改?我刚开始学,基本处于本人
下面是代码#include <msp430x14x.h>#include "Config.h"
#include"ADC.h"
#include"12864.h"
#define uchar unsigned char
float TEMP1,TEMP2,Flag,A[5]={0,0,0,0,0},B[5]={0,0,0,0,0};
uchar x;
uchar y;                                                         
float NUM1,NUM2;
//***********************************************************************
//                   系统时钟初始化
//***********************************************************************
void Clock_Init()
{
  uchar i;
  BCSCTL1&=~XT2OFF;                 //打开XT2振荡器
  BCSCTL2|=SELM1+SELS;              //MCLK为8MHZ,SMCLK为8MHZ
  do{
    IFG1&=~OFIFG;                   //清楚振荡器错误标志
    for(i=0;i<100;i++)
       _NOP();
  }
  while((IFG1&OFIFG)!=0);           //如果标志位1,则继续循环等待
  IFG1&=~OFIFG;
}
/*************************************************************************
ADC初始化程序,用于配置ADC相关寄存器
多通道采集的关键
1:  选择正确的的转换模式  
2: 选择正确的CSTARTADD:单通道模式转换通道/多通道模式守通道
      定义单次转换的启始地址或者序列通道转换的首地址
3:理解好  EOS:多通道转换末通道标志  0 序列没有结束  1 该序列中最后一次转换
4:单通道转换的地址 CSTARTADD,对应于上面的 ADC12MCTLx
*************************************************************************/
void ADC_Init()
{
  P6SEL=BIT1; //选择ADC通道,设置对应IO口的功能模式
  P6DIR=0x00;
  ADC12CTL0|= ADC12ON + SHT0_2;//+ REF2_5V + REFON; //ADC电源控制开,16个CLK,内部基准2.5V
  ADC12CTL1 = ADC12SSEL_0 + SHP + CONSEQ_1 + CSTARTADD_0 ;            //SMCLK做时钟源
  ADC12MCTL0 = SREF_2+INCH_0; // 参考电压:外部基准电压3.3V ADC 通道:A0
  ADC12MCTL1 = SREF_2+INCH_1+ EOS; // 参考电压:外部基准电压3.3V ADC 通道:A1
  ADC12IE|= BIT0+BIT1;                                 //中断允许
  ADC12CTL0|= ENC; //使能转换器

}

//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  U0CTL|=SWRST;               //复位SWRST
  U0CTL|=CHAR;                //8位数据模式
  U0TCTL|=SSEL1;              //SMCLK为串口时钟
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps
  ME1|=UTXE0;                 //UART0发送使能
  ME1|=URXE0;                 //UART0接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                //接收中断使能位

  P3SEL|= BIT4;               //设置IO口为普通I/O模式
  P3DIR|= BIT4;               //设置IO口方向为输出
  P3SEL|= BIT5;
}
//***********************************************************************
//               MSP430IO口初始化
//***********************************************************************
void Port_Init()
{
  LED8DIR = 0xff;                  //设置IO口方向为输出
  LED8 = 0x00;                     //初始设置为00

}

//*************************************************************************
//              串口0发送数据函数
//*************************************************************************

void Send_Byte(uchar data)
{
  while((IFG1&UTXIFG0)==0);          //发送 寄存器空的时候发送数据
    U0TXBUF=1;
}

//*************************************************************************
//

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5556

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10449
金钱
10449
注册时间
2017-2-18
在线时间
1890 小时
发表于 2019-4-4 18:18:19 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-8 19:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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