在IAR调试窗口里面一切正常,在发送缓冲区里的数据也正常,但是用串口调试助手显示出来的数据却都是00
这是怎么回事???
/******************************************************************************
*******************************************************************************/
#include<msp430x14x.h>
#include"24C08.h"
#include"RS232.h"
#include"ds1302.h"
#include"gdata.h"
typedef unsigned char uchar;
typedef unsigned int uint;
uchar time=0;
uchar ye=0,addr=0x00;
uchar Sdata[7];
main()
{
P1DIR=0xff;P1OUT=0xff;
P2DIR=0xff;P2OUT=0xff;
P3DIR=0xff;P3OUT=0xff;
P4DIR=0xff;P4OUT=0xff;
P5DIR=0xff;P5OUT=0xff;
P6DIR=0xff;P6OUT=0xff;
WDTCTL=WDTPW+WDTHOLD;
BCSCTL1&=~XT2OFF;//打开外部晶体振荡器XT2
do
{
for(uchar i=0;i<0xff;i++) _NOP();//等待至少50us,等外部晶体震荡器正常工作
IFG1 &= ~OFIFG;//清除晶体震荡器失效标志OFIFG标志
}while(IFG1 & OFIFG);//检测晶体震荡器失效标志OFIFG
BCSCTL2|=SELM_2+SELS;//Smclk=Mclk
CCR0=60000;//60ms
CCTL0=CCIE;
TACTL=TASSEL_2+ID_3+MC_1+TACLR+TAIE;//定时器A时钟为smclk,8分频,增计数模式,TAR清零,溢出中断允许
//向存储块内写入数据
//读一个数据
//发送一个数据
//清除一个数据
init_EEPROM();//初始化I2C端口
Uart_Init();//串口初始化
Reset_DS1302();//时钟复位
_EINT();//
LPM0;//
while(1)
{
;
}
}
void execution()
{
BurstRead1302(rdata);
for(uchar i=0;i<7;i++)
{
write_add(ye,addr,rdata[i]);
addr++;
if(addr==0xff)//存储块分4页,当前页写满之后,写入下一页
{
ye++;
if(ye>=3)//共4页:0,1,2,3
ye=0;
}
}
if(ye==0)
{
ye=0;addr=0x00;
for(uchar i=0;i<7;i++)
{
Sdata[i]=read_add(ye,addr);//读出指定地址的数据
write_add(ye,addr,0x00);//发送完之后立即清除
addr++;
}
PutData(Sdata);
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timerA_ISR()
{
time++;
if(time>=10)
{
// LPM0_EXIT;
execution();
time=0;
}
}
下边是RS232.c
/***************************************
向PC机发送字符串
****************************************/
void PutString (uchar *str)
{
while(*str != '\0')
{
while(!(IFG1 & UTXIFG0));//检测缓冲区是否空闲
TXBUF0 = *str++;//将要发送的字符存入缓冲区发送数据
}while(!(IFG1 & UTXIFG0));
TXBUF0='\n';//回车换行
}
/***************************************
向PC机必送数据
****************************************/
void PutData(uchar *data)
{
for(uchar i=0;i<7;i++)
{
while(!(IFG1&UTXIFG0));
TXBUF0=data[i];
}
}
/***************************************
串口初始化
****************************************/
void Uart_Init()
{
P3SEL |= 0x30;//P3.4 P3.5为Uart的TXD RXD
ME1 |= URXE0 + UTXE0;//使能UART的TXD RXD
UCTL0 |= CHAR;//数据传输8位
UTCTL0 = SSEL1;//
UBR00 = 0x00;
UBR10 = 0x6D;//波特率9600,串口时钟为32K,误差为3.41
UMCTL0 = 0x03;
UCTL0 &= ~SWRST;
}
打赏帖 | |
---|---|
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 | |
VOFA+波形显示+JYD-31蓝牙发送和解析不定长数据被打赏10分 | |
【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度被打赏22分 | |
【换取手持数字示波器】STM32F4驱动RPR-0521RS照度、接近一体型传感器被打赏23分 | |
宏定义和const关键字定义被打赏5分 | |
【分享开发笔记,赚取电动螺丝刀】几个单片机I2S外设的BLCK时钟对比被打赏20分 | |
【功率监测与控制系统DIY活动成果贴】DIY功率计与LabVIEW数据采集被打赏100分 |