急求stm32串口1,2同时使用的方法,和注意方法

2019-08-17 04:29发布


在做东西的时候发现通过串口一接收的信息转发串口二没有问题,但是反过来就不行。求大神相助
请指点注意事项
库函数版本
谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
单片机入门
2019-08-19 02:06
xxssl 发表于 2017-6-27 17:55
串口1中断和串口2中断只有接收数据,发送数据你是怎么处理的?

int main(void)
{               
        u16 t,t1;  
        u16 len,len1;       
        u16 times=0;
        delay_init();                                                            //延时函数初始化          
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);             //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(9600);
  uart2_init(9600);                                        //串口初始化为115200

        LED_Init();                                                                  //LED端口初始化  
         
        KEY_Init();                                                 //初始化与按键连接的硬件接口
        while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;                                //得到此次接收到的数据长度
                        printf(" 您发送的消息为: ");
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART2, USART_RX_BUF[t]);               //向串口1发送数据
                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); //等待发送结束
                        }
                        printf(" ");                                       //插入换行
                        USART_RX_STA=0;
                }
                else if(USART2_RX_STA&0x8000)
                {                                          
                        LED1=!LED1;
                        len1=USART2_RX_STA&0x3fff;                                //得到此次接收到的数据长度
                        printf(" 您发送的消息为: ");
                        for(t1=0;t1<len1;t1++)
                        {
                                USART_SendData(USART1, USART2_RX_BUF[t1]);               //向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);   //等待发送结束
                        }
                        printf(" ");                                        //插入换行
                        USART2_RX_STA=0;
                }else
                {
                        times++;
                        if(times%5000==0)
                        {
                                printf(" 通信工程 ");
                                printf("智防物联@mxj ");
                        }
                        if(times%200==0)printf("请输入数据,以回车键结束 ");  
                        if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                        delay_ms(10);   
                }
        }         
}

一周热门 更多>