打印
[应用相关]

STM32F103串口通信无应答问题请教

[复制链接]
367|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用了很多方法检测但还是不能解决问题

采用的单片机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 );
}


使用特权

评论回复
沙发
香水城| | 2021-2-22 20:27 | 只看该作者
会不会是那个串口芯片使用上的问题?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

320

主题

1407

帖子

1

粉丝