sunzl1987 发表于 2012-1-11 15:02:32

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

当从虚拟串口到真实串口发数据时,没有错误,但发送一个稍微大一点的文件时(如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, 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
}
}
望高手指教。

sunzl1987 发表于 2012-1-11 15:38:36

回复【楼主位】sunzl1987
-----------------------------------------------------------------------

自己先顶起

gzhuli 发表于 2012-1-11 16:09:10

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

sunzl1987 发表于 2012-1-13 17:12:07

顶一下,望有人继续指点!

gzhuli 发表于 2012-1-13 17:16:20

还想要什么指点?

djyos 发表于 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版本才一再推迟发布,现在已经到尾声,敬请期待。

sunzl1987 发表于 2012-1-16 09:37:09

回复【4楼】gzhuli 咕唧霖
-----------------------------------------------------------------------

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

sunzl1987 发表于 2012-1-16 09:38:10

回复【5楼】djyos 都江堰操作系统
-----------------------------------------------------------------------

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

gzhuli 发表于 2012-1-16 10:43:31

不能debug就有点怪异了,会不会屏蔽了JTAG?

sunzl1987 发表于 2012-1-16 11:26:14

回复【8楼】gzhuli 咕唧霖
-----------------------------------------------------------------------
应该不是屏蔽了JTAG,因为用JTAG烧程序都是正常的。
页: [1]
查看完整版本: 关于stm32 的Virtual_COM_Port 的例程的一些问题