关于MATLAB发送数据UART接收的问题

2019-07-20 22:32发布

MATLAB打开串口后,可以接受数据,但是发送就不行,我用XCOM发送数据后可以在LCD屏幕上显示,但是MATLAB上用fprintf和fwrite发送就没法发送,LCD上没法显示。是不是MATLAB发送的时候需要结尾加上0x0d,可是如何用fprintf和fwrite在结尾添加0x0d?

STM32程序
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
int main(void)
{
    u8 t;
    u32 len;
    u8 lcd_id[12];               
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    delay_init(168);     
    uart_init(115200);        

     LCD_Init();           
    POINT_COLOR=RED;     
    sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);//
        LCD_Clear(BLUE);
        POINT_COLOR=RED;      
        LCD_ShowString(30,40,210,24,24,"Explorer STM32F4");   
        LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
         LCD_ShowString(30,110,200,16,16,lcd_id);                                 
        LCD_ShowString(30,130,200,12,12,"2014/5/4");        
      while(1)
    {         

        if(USART_RX_STA&0x8000)
        {                       
            len=USART_RX_STA&0x3fff;
            
            for(t=0;t<len;t++)
            {
                LCD_ShowString(30,170+t*20,len,12,12,&USART_RX_BUF[t]);   
                USART_SendData(USART1, USART_RX_BUF[t]);         
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
            }
            USART_RX_STA=0;
        }        

    }
}


MATLAB程序
        scom=serial('COM4');
        set(scom,'BaudRate', 115200,'DataBits',8,'StopBits',1,'Parity',...
        'none');
        scom.inputBufferSize=31*1024;
        scom.Terminator='LF';
        scom.timeout=15;
        fopen(scom);
然后之后我fprintf、fwrite都不行了,用XCOM可以显示数据。请问matlab上该怎么改





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。