OpenEdv-开源电子网

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

STM32F103USART1和USART2能不能同时使用同时使用时要注意哪些

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-4-20
在线时间
9 小时
发表于 2019-4-20 12:06:13 | 显示全部楼层 |阅读模式
1金钱
/*LCD_INIT()函数使用了printf函数,所以想使用串口1点亮屏幕,然后想用串口2收发数据。
未加串口2时屏幕可以正常显示,加了串口2程序之后屏幕无法显示了*/


#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "ser.h"
#include "usart.h"
/*LCD_init()oˉêyμ÷óÃáËprintf£¬ËùòÔ′®¿ú1±ØDëê1óÃ
*/
u8  usa3_buf[6]={0,0,0,0,0,0};
u8 a,TEMP,start_flag;


void        USART_Hand(void);

int main(void)
{         
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //éèÖÃNVICÖD¶Ï·Ö×é2:2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
                usart2_init(9600);
         uart_init(115200);                 //′®¿ú3õê¼»ˉ
//
        LED_Init();                             //LED¶Ë¿ú3õê¼»ˉ
        LCD_Init();
         LCD_Clear(WHITE);
                POINT_COLOR=RED;          
         LCD_ShowString(30,40,210,24,16,"TEMP: ");
          while(1)
        {                 
                                USART_Hand();

                 if(start_flag==1)   
                 {
                         USART_Cmd(USART1,DISABLE);
                         start_flag=0;
//                         TEMP= usa3_buf[2]+usa3_buf[3]+usa3_buf[4];
//                                if((usa3_buf[0] == 0xaa) && (usa3_buf[1] == 0x55))
//                {               
                          LED0=0;
//                        if(usa3_buf[5]==0x06)
//                        {
                        LCD_ShowxNum(70,40,usa3_buf[2],3,16,0);
                        LCD_ShowxNum(70,56,usa3_buf[0],3,16,0);
      LCD_ShowxNum(70,72,usa3_buf[1],3,16,0);
      LCD_ShowxNum(70,88,usa3_buf[3],3,16,0);
      LCD_ShowxNum(70,104,usa3_buf[4],3,16,0);
      LCD_ShowxNum(70,120,55,3,16,0);               
//            }
//                 }
                          USART_Cmd(USART1,ENABLE);
                 }
        }
}


void        USART_Hand(void)
{         
                         u32 i;

    if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)
    {                     
        usa3_buf[0] = USART_ReceiveData(USART1);       
                                      i = 1;                                                                         
                                  while(1)
             {   
                                                          
                 if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)
                                       {         
                                                                                          
                        usa3_buf[i] = USART_ReceiveData(USART1);
                                 i++;
                              if(i > 5)
                                {    LED1=0;
                                    i = 0;
                                                                                         start_flag=1;
                                                                                       break;
                                                                     }
                                                                                 }
                                                  }
                                        }
}


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

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
发表于 2019-4-20 12:10:52 | 显示全部楼层
你串口2的驱动里面是否开了中断,中断处理函数里面又是否清掉它?
回复

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-3-28
在线时间
12 小时
发表于 2019-4-20 15:07:47 | 显示全部楼层
可以同时使用,但要注意中断优先级的配置
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-4-20 20:44:12 | 显示全部楼层
串口我都是直接USART+DMA+IDLE配合使用,感觉目前没用遇到什么问题,都挺稳定好用的
一分耕耘一分收获。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 18:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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