搜索
bottom↓
回复: 9

关于stm32 的Virtual_COM_Port 的例程的一些问题

[复制链接]

出0入0汤圆

发表于 2012-1-11 15:02:32 | 显示全部楼层 |阅读模式
当从虚拟串口到真实串口发数据时,没有错误,但发送一个稍微大一点的文件时(如1M),误码率很高。不知是为什么?
其中:
int main(void)
{

#ifdef DEBUG
  debug();
#endif
  
  Set_System();
  Set_USBClock();
  USB_Interrupts_Config();
  USB_Init();
  
  while (1)
  {
    if (count_out != 0)
    {
      USB_To_USART_Send_Data(&buffer_out[0], count_out);//这句是发数据的函数,原型如下。
      count_out = 0;
    }
  }
}
其中:
void USB_To_USART_Send_Data(u8* data_buffer, u8 Nb_bytes)
{
  u32 i;

  for (i = 0; i < Nb_bytes; i++)
  {
   USART_SendData(USART1, *(data_buffer + i));

   while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);         //add by sun zhilong
  }
}
望高手指教。

出0入0汤圆

 楼主| 发表于 2012-1-11 15:38:36 | 显示全部楼层
回复【楼主位】sunzl1987
-----------------------------------------------------------------------

自己先顶起

出0入618汤圆

发表于 2012-1-11 16:09:10 | 显示全部楼层
ST这个例程是不完善的,操作USB缓冲区时没做保护,所以连续大量数据向电脑方向发送时缓冲区有可能冲乱。
建议参考安哥的代码:【原创开源】 基于 STM32F103C6T6 的 USB 转 RS232 模块..

出0入0汤圆

 楼主| 发表于 2012-1-13 17:12:07 | 显示全部楼层
顶一下,望有人继续指点!

出0入618汤圆

发表于 2012-1-13 17:16:20 | 显示全部楼层
还想要什么指点?

出0入0汤圆

发表于 2012-1-14 23:08:58 | 显示全部楼层
据我所知,有些大公司是不提倡,甚至禁止直接使用IC厂商提供的example代码(包含固件库)的。
    根据我跟一些芯片公司原厂交流的经验,有不少厂家提供的代码和硬件参考设计,限于能演示芯片功能,并不对可靠性、可用性、稳定性做任何承诺。大家做实验可以,但要用来开发产品,最好慎重一点。
    在移植djyos的过程中,也发现了大量原厂提供的固件是有错误的。因此djyos的任意一个移植版本,都不会把原厂提供的代码直接包含到工程中,即使使用了原厂代码,也会仔细审查、仔细测试、有选择地使用。在这方面,djyos比几乎所有开发板都严谨得多,否则djyos也不可能获得像继电保护这样的用户。

    例如nxp公司提供的lpc_12xx的代码中,下列定义是错误的:
#define IOCON_PIO_SMODE_BYPASS          ((u16)0x0000  )
#define IOCON_PIO_SMODE_ONE_CLOCK       ((u16)0x2000  )
#define IOCON_PIO_SMODE_TWO_CLOCK       ((u16)0x4000  )
#define IOCON_PIO_SMODE_THREE_CLOCK     ((u16)0x6000  )

    djyos虽然引用了这些定义,但对照datasheet和自己测试的结果,修正为:
#define IOCON_PIO_SMODE_BYPASS          ((u16)0x0000  )
#define IOCON_PIO_SMODE_ONE_CLOCK       ((u16)0x0800  )
#define IOCON_PIO_SMODE_TWO_CLOCK       ((u16)0x1000  )
#define IOCON_PIO_SMODE_THREE_CLOCK     ((u16)0x1800  )
   其他许多硬件,都有类似的情况。djyos不会轻易包含原厂驱动代码,但只要提供了的driver,都是可以放心使用的。
   也正是源于这份严谨的态度,djyos1.0.0版本才一再推迟发布,现在已经到尾声,敬请期待。

出0入0汤圆

 楼主| 发表于 2012-1-16 09:37:09 | 显示全部楼层
回复【4楼】gzhuli 咕唧霖
-----------------------------------------------------------------------

代码可以编译没错误,可以通过JLINK下到开发板。但是不能Debug,也没有报错提示。不知是设置问题,还是软件问题。

出0入0汤圆

 楼主| 发表于 2012-1-16 09:38:10 | 显示全部楼层
回复【5楼】djyos 都江堰操作系统
-----------------------------------------------------------------------

好的,共同期待djyos1.0.0版本发布。

出0入618汤圆

发表于 2012-1-16 10:43:31 | 显示全部楼层
不能debug就有点怪异了,会不会屏蔽了JTAG?

出0入0汤圆

 楼主| 发表于 2012-1-16 11:26:14 | 显示全部楼层
回复【8楼】gzhuli 咕唧霖
-----------------------------------------------------------------------
应该不是屏蔽了JTAG,因为用JTAG烧程序都是正常的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 06:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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