OpenEdv-开源电子网

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

STM32单片机串口2输出数据不对

[复制链接]

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2019-4-19
在线时间
8 小时
发表于 2019-11-15 20:52:16 | 显示全部楼层 |阅读模式
5金钱
串口2通过RS232转USB串口输出数据到串口调试助手,发现数据完全不对:


3.png
求助!!!!
  1. #include "sys.h"
  2. #include "usart.h"          
  3. //////////////////////////////////////////////////////////////////////////////////          
  4. //èç1ûê1óÃucos,Ôò°üà¨ÏÂÃæμÄí·Îļt¼′¿é.
  5. #if SYSTEM_SUPPORT_OS
  6. #include "includes.h"                                        //ucos ê1óà         
  7. #endif
  8. //////////////////////////////////////////////////////////////////////////////////         

  9. //1,Ôö¼óá˶ÔUCOSIIμÄÖ§3Ö
  10. //////////////////////////////////////////////////////////////////////////////////           


  11. //////////////////////////////////////////////////////////////////
  12. //¼óèëòÔÏÂ′úÂë,Ö§3Öprintfoˉêy,¶ø2»DèòaÑ¡Ôñuse MicroLIB          
  13. #if 1
  14. #pragma import(__use_no_semihosting)            
  15. //±ê×¼¿aDèòaμÄÖ§3Öoˉêy                 
  16. struct __FILE
  17. {
  18.         int handle;

  19. };

  20. FILE __stdout;      
  21. //¶¨òå_sys_exit()òÔ±üÃaê1óðëÖ÷»úģ꽠  
  22. void _sys_exit(int x)
  23. {
  24.         x = x;
  25. }
  26. //ÖØ¶¨òåfputcoˉêy
  27. int fputc(int ch, FILE *f)
  28. {      
  29.         while((USART2->SR&0X40)==0);//Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï   
  30.     USART2->DR = (u8) ch;      
  31.         return ch;
  32. }
  33. #endif



  34. #if EN_USART2_RX   //èç1ûê1Äüá˽óêÕ
  35. //′®¿ú2ÖD¶Ï·tÎñ3ìDò
  36. //×¢òa,¶áè¡USARTx->SRÄü±üÃaÄaÃûÆäÃîμÄ′íÎó          
  37. u8 USART_RX_BUF[USART_REC_LEN];     //½óêÕ»o3å,×î′óUSART_REC_LEN¸ö×Ö½ú.
  38. //½óêÕ×′ì¬
  39. //bit15£¬        ½óêÕíê3é±êÖ¾
  40. //bit14£¬        ½óêÕμ½0x0d
  41. //bit13~0£¬        ½óêÕμ½μÄóDD§×Ö½úêyÄ¿
  42. u16 USART_RX_STA=0;       //½óêÕ×′쬱ê¼Ç          
  43.   
  44. void uart_init(u32 bound){
  45.   //GPIO¶Ë¿úéèÖÃ
  46.   GPIO_InitTypeDef GPIO_InitStructure;
  47.         USART_InitTypeDef USART_InitStructure;
  48.         NVIC_InitTypeDef NVIC_InitStructure;
  49.          
  50.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);        //ê1ÄüUSART2
  51.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ê1ÄüGPIOAê±Öó
  52.         //USART2_TX   GPIOA.2
  53.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
  54.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  55.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸′óÃíÆíìêä3ö
  56.   GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIOA.2
  57.    
  58.   //USART2_RX          GPIOA.33õê¼»ˉ
  59.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
  60.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿Õêäèë
  61.   GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIOA.3

  62.   //Usart2 NVIC ÅäÖÃ
  63.   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  64.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//ÇàÕ¼óÅÏè¼¶3
  65.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×óóÅÏè¼¶3
  66.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1Äü
  67.         NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷
  68.   
  69.    //USART 3õê¼»ˉéèÖÃ

  70.         USART_InitStructure.USART_BaudRate = bound;//′®¿ú2¨ìØÂê
  71.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö3¤Îa8λêy¾Y¸ñê½
  72.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò»¸öí£Ö1λ
  73.         USART_InitStructure.USART_Parity = USART_Parity_No;//ÎTÆæÅ¼D£Ñéλ
  74.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎTó2¼têy¾Yá÷¿ØÖÆ
  75.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //êÕ·¢Ä£ê½

  76.   USART_Init(USART2, &USART_InitStructure); //3õê¼»ˉ′®¿ú2
  77.   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//¿aÆô′®¿ú½óêüÖD¶Ï
  78.   USART_Cmd(USART2, ENABLE);                    //ê1Äü′®¿ú2

  79. }

  80. void USART2_IRQHandler(void)                        //′®¿ú2ÖD¶Ï·tÎñ3ìDò
  81.         {
  82.         u8 Res;
  83. #if SYSTEM_SUPPORT_OS                 //èç1ûSYSTEM_SUPPORT_OSÎaÕæ£¬ÔòDèòaÖ§3ÖOS.
  84.         OSIntEnter();   
  85. #endif
  86.         if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
  87.                 {
  88.                 Res =USART_ReceiveData(USART2);        //¶á衽óêÕμ½μÄêy¾Y
  89.                
  90.                 if((USART_RX_STA&0x8000)==0)//½óêÕÎ′íê3é
  91.                         {
  92.                         if(USART_RX_STA&0x4000)//½óêÕμ½áË0x0d
  93.                                 {
  94.                                 if(Res!=0x0a)USART_RX_STA=0;//½óêÕ′íÎó,ÖØD¿aê¼
  95.                                 else USART_RX_STA|=0x8000;        //½óêÕíê3éáË
  96.                                 }
  97.                         else //»1ûêÕμ½0X0D
  98.                                 {       
  99.                                 if(Res==0x0d)USART_RX_STA|=0x4000;
  100.                                 else
  101.                                         {
  102.                                         USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
  103.                                         USART_RX_STA++;
  104.                                         if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//½óêÕêy¾Y′íÎó,ÖØD¿aê¼½óêÕ          
  105.                                         }                 
  106.                                 }
  107.                         }                    
  108.      }
  109. #if SYSTEM_SUPPORT_OS         //èç1ûSYSTEM_SUPPORT_OSÎaÕæ£¬ÔòDèòaÖ§3ÖOS.
  110.         OSIntExit();                                                                                           
  111. #endif
  112. }
  113. #endif       

复制代码


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

使用道具 举报

7

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1327
金钱
1327
注册时间
2019-7-11
在线时间
165 小时
发表于 2019-11-16 13:06:48 | 显示全部楼层
你自己看看你这个贴子
世界和平
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14410
金钱
14410
注册时间
2018-8-3
在线时间
1156 小时
发表于 2019-11-16 15:55:49 | 显示全部楼层
自己参考下这个帖子吧:http://www.openedv.com/forum.php ... d=282609&extra=
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 00:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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