完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 Krvice 于 2021-2-20 20:55 编辑 用了很多方法检测但还是不能解决问题 采用的单片机是STM32F103C8T6,串口芯片CH340C 想通过CH340串口实现通信和ISP下载,但是测试中发现ISP下载串口无应答,并且串口通信程序通过SW烧写进去之后电脑也无法接收到数据,库函数编写的程序和CubeMX生成的程序都不行,同样的程序在最小系统板上都能够实现相应的功能。 把CH340C的TXD、RXD引脚飞线连接,再用电脑发送数据,这个时候是可以电脑是可以接收到数据的。 单片机如果烧写一下点灯程序,中断服务程序都是可以运行的,但是一到串口部分就会无应答 利用了LED灯检测串口程序运行状态显示,串口初始化部分可以正常执行,但是到了数据发送函数部分貌似就不能执行了。(在串口程序的每个部分后面加一个比较长的延时,延时后写一个点灯的小程序,点灯之后再加一个延时,保证LED变化可以比较容易的观察到) 原理图和串口程序如下 #include "bsp_usart.h" static void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void USART_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE); DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE); // USART Tx的GPIO配置 GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure); // USART Rx的GPIO配置 GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure); // 配置串口参数 USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(DEBUG_USARTx, &USART_InitStructure); NVIC_Configuration(); USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE); USART_Cmd(DEBUG_USARTx, ENABLE); } void Usart_SendByte(USART_TypeDef* USARTx, uint8_t data) { USART_SendData(USARTx, data); while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET ); } |
|
相关推荐
10个回答
|
|
我之前也遇到过 同样STM32F103C8T6,最后发现CH340C需要使用和MCU同一电源供电才行
|
|
|
|
硬件是不是有问题,打一下电压这些
|
|
3 条评论
|
|
路过学习,很实用,谢谢分享。
|
|
|
|
路过学习,谢谢分享。
|
|
|
|
路过学习,很实用,谢谢分享。
|
|
|
|
不要用5V给CH340C供电,用3.3V试试。
|
|
|
|
您好,
①建议先把NRST和BOOT0两个管脚先正常接,看看通信是不是能够成功。如果可以的话,可能NRST和BOOT引脚这块的控制逻辑有问题。 ②另外R8和R13这两个电阻取值有点大,换成51R看看。Rx端添加一个上拉电阻,如果外部添加不方便的话,可以通过芯片内部配置成若上拉。 |
|
|
|
我一直被串口通讯困扰,谢谢楼主分享。。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1738 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1621 浏览 3 评论
4179 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1769 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2241 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 04:11 , Processed in 0.840469 second(s), Total 102, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号