android stm32 usb串口,STM32 USB转串口CDC官方示例程序修正

官方程序中有几个BUG导致只能单字节发送,用7位串口方式也有问题。查看源程序,发现有几个地方需要修改:

1.USB->UART 没有等串口发送完,现象是只能发一个字符

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));

//added by dreamdive

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

}

}

2.bool USART_Config(void)函数中,数据长度设置错误导致乱码

/*set the data type : only 8bits and 9bits is supported */

switch (linecoding.datatype)

{

case 0x07://数据长度7位

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

break;

case 0x08://数据长度8位

//USART_InitStructure.USART_WordLength = USART_WordLength_9b;

//无较验位时用8位方式,否则用9位方式

if(linecoding.paritytype==USART_Parity_No)

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

else

USART_InitStructure.USART_WordLength = USART_WordLength_9b;

break;

default :

{

USART_Config_Default();

return (FALSE);

}

}

3.void USART_To_USB_Send_Data(void)函数中,判断错误导致用7位串口方式时UART->USB乱码

if (USART_InitStructure.USART_WordLength == USART_WordLength_8b)

{

buffer_in[count_in] = USART_ReceiveData(USART1) & 0x7F;

}

else if (USART_InitStructure.USART_WordLength == USART_WordLength_9b)

{

buffer_in[count_in] = USART_ReceiveData(USART1);

}

改为:

if (linecoding.datatype == 0x07)

{

buffer_in[count_in] = USART_ReceiveData(USART1) & 0x7F;

}

else

{

buffer_in[count_in] = USART_ReceiveData(USART1);

}

经测试,8位无校验/带校验和7位无校验/带校验工作全部正常。

刚刚看了ST最新官方um0424.zip,修正和我想的一样,呵呵:-).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32最小系统开发板上的USB串口芯片一般是通过串口下载程序的。下面是一般的步骤: 1. 首先,确保你的电脑已经安装了串口驱动程序。在设备管理器中查看是否有COM端口。 2. 将STM32最小系统开发板连接到电脑上。可以使用USB线连接到计算机的USB接口。 3. 在计算机上打开一个STM32开发环境,如Keil或者STM32CubeIDE。 4. 在开发环境中选择正确的串口通信参数,如波特率、数据位、校验位等。这些参数应该与开发板的USB串口芯片的默认参数相匹配。 5. 在开发环境中创建一个新的工程或者打开一个已经存在的工程。 6. 在工程中编写代码,并将代码编译生成一个可执行文件(.hex或.bin格式)。 7. 将生成的可执行文件下载到STM32最小系统开发板上。可以选择直接通过开发环境进行下载,或者使用其他烧录工具,如STM32 ST-LINK或者J-Link。 8. 在开发环境中选择正确的目标芯片型号和下载目标,然后点击“下载”按钮。下载过程中,开发环境会将可执行文件通过串口发送给开发板,并烧录到芯片中。 9. 下载完成后,可以断开开发板与电脑的连接,启动开发板,程序将开始运行。 总之,通过串口下载程序STM32最小系统开发板需要确保正确的串口设置和下载工具的选择以及正确的目标芯片型号。遵循以上步骤,你应该能够成功下载程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值