OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8311|回复: 15

串口调试助手没有数据

[复制链接]

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
发表于 2016-7-29 14:57:13 | 显示全部楼层 |阅读模式
2金钱
新电脑,安装了CH340的驱动,在其他电脑上能够显示电压值的,可是新电脑上显示不了了。求帮助解决。截图如下:

2016-07-29_145219.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11407
金钱
11407
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-7-29 16:12:40 | 显示全部楼层

汉字和数值都是下位机发送的吧?
目测像是下位机的问题。。。


回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
 楼主| 发表于 2016-7-29 16:49:34 | 显示全部楼层
xuande 发表于 2016-7-29 16:12
汉字和数值都是下位机发送的吧?
目测像是下位机的问题。。。

开发板连其他电脑都能显示电压值的,浮空1.6几付。到新电脑上就显示不了,我安装了CH340的驱动了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-29 20:06:14 | 显示全部楼层
小叶 发表于 2016-7-29 16:49
开发板连其他电脑都能显示电压值的,浮空1.6几付。到新电脑上就显示不了,我安装了CH340的驱动了

你下载串口通信实验,测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
 楼主| 发表于 2016-7-31 22:03:36 | 显示全部楼层
正点原子 发表于 2016-7-29 20:06
你下载串口通信实验,测试下。

串口通信实验是可以实现的。在串口通信助手上输入什么,上面的显示窗口就能显示东西。可是我通过ADC实验,我先使用串口助手向开发板发送“a”字符,串口接收到了字符进入中断,然后将ADC端口转化的数值传到串口显示在串口助手上。串口助手上就没有数据。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-8-1 00:41:32 | 显示全部楼层
小叶 发表于 2016-7-31 22:03
串口通信实验是可以实现的。在串口通信助手上输入什么,上面的显示窗口就能显示东西。可是我通过ADC实验 ...

还是怀疑你代码问题多一点。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2016-7-4
在线时间
47 小时
发表于 2016-8-1 11:29:33 | 显示全部楼层
这应该是你的代码问题,汉字都能输出
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
 楼主| 发表于 2016-8-1 11:30:57 | 显示全部楼层
Randy.zhang 发表于 2016-8-1 11:29
这应该是你的代码问题,汉字都能输出

同一个代码在其他电脑上是有数据输出的!这个代码如果不对的话,其他电脑上应该输出不了电压值的吧。
回复

使用道具 举报

9

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2016-7-4
在线时间
47 小时
发表于 2016-8-1 11:43:41 | 显示全部楼层
把你的打印代码贴出来看看
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
 楼主| 发表于 2016-8-1 12:00:54 | 显示全部楼层
Randy.zhang 发表于 2016-8-1 11:43
把你的打印代码贴出来看看

贴出来的代码文字都变成乱码了,怎么在论坛上贴出和MDK里面一样的效果的代码啊。新手不太会啊。
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
 楼主| 发表于 2016-8-1 12:08:49 | 显示全部楼层
Randy.zhang 发表于 2016-8-1 11:43
把你的打印代码贴出来看看

[mw_shl_code=c,true]#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include "misc.h"
#define ADC1_DR_Address    ((uint32_t)0x4001244C)
const double Vref_ = 3.3;
__IO uint16_t ADCConvertedValue;
unsigned char TxBuf[10]  = " \r\n";
unsigned char TxBuf1[50] = " ¶Ë¿úμçÑ1ÖμÎa \r\n\r\n";
unsigned char TxBuf2[50] = "        hello   \r\n\r\n";
unsigned char TxBuf3[50] = "        ½óêÕμ½êy¾Y    \r\n\r\n";

void RCC_Configuration(void);
void ADC1_Config(void);
void USART1_Config(void);
void USART1_NVIC_Config(void);
static unsigned int rec_temp=0;

int main(void)
{
        unsigned int i_tmp = 0,i=0;
        double ADC_Infact_V = 0;
          RCC_Configuration();
        ADC1_Config();
        USART1_Config();

        for( i = 0; TxBuf != '\0'; i++)
        {
                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                USART_SendData(USART1 , TxBuf);
        }
        for( i = 0; TxBuf1 != '\0'; i++)
        {
                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                USART_SendData(USART1 , TxBuf1);
        }
       
       
  while (1)
  {
               
               
                if(rec_temp == 'a')
                {
                                rec_temp = 0;
               
                        {                       
                                i_tmp = ADCConvertedValue;
                                ADC_Infact_V = ((double)i_tmp)*Vref_/4095*1000;
                                i_tmp = (unsigned int)ADC_Infact_V;
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , 0x30+i_tmp/1000%10);
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , '.');
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , 0x30+i_tmp/100%10);
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , 0x30+i_tmp/10%10);
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , 0x30+i_tmp%10);
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , 'V');
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , '\r');
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , '\n');
                        i_tmp = ADCConvertedValue;
                        }
               

                }
  }
}


void RCC_Configuration(void)
{
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);
}
void USART1_NVIC_Config(void)
{
        NVIC_InitTypeDef USART_NVIC_InitStructuer;
        USART_NVIC_InitStructuer.NVIC_IRQChannel = USART1_IRQn;
          USART_NVIC_InitStructuer.NVIC_IRQChannelSubPriority = 0;
        USART_NVIC_InitStructuer.NVIC_IRQChannelCmd = ENABLE;       
        NVIC_Init(&USART_NVIC_InitStructuer);
}

void USART1_Config(void)
{
        USART_InitTypeDef USART_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
                
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                            
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);                  

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        USART_InitStructure.USART_BaudRate = 9600;
        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(USART1, &USART_InitStructure);
        USART_ITConfig(USART1,USART_IT_RXNE, ENABLE);
        USART_ITConfig(USART1,USART_IT_TXE, DISABLE);
        USART_Cmd(USART1, ENABLE);

        USART1_NVIC_Config();
}

void ADC1_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
        ADC_InitTypeDef ADC_InitStructure;
        DMA_InitTypeDef DMA_InitStructure;

  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  
  DMA_DeInit(DMA1_Channel1);
  DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADCConvertedValue;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
  DMA_InitStructure.DMA_BufferSize = 1;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(DMA1_Channel1, &DMA_InitStructure);
  
  
  DMA_Cmd(DMA1_Channel1, ENABLE);
  
  
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  ADC_InitStructure.ADC_ScanConvMode = ENABLE;
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  ADC_InitStructure.ADC_NbrOfChannel = 1;
  ADC_Init(ADC1, &ADC_InitStructure);

   
  ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);

  
  ADC_DMACmd(ADC1, ENABLE);
  
  
  ADC_Cmd(ADC1, ENABLE);

   
  ADC_ResetCalibration(ADC1);
  
  while(ADC_GetResetCalibrationStatus(ADC1));


  ADC_StartCalibration(ADC1);

  while(ADC_GetCalibrationStatus(ADC1));
     

  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}


void USART1_IRQHandler(void)                       
{
  
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
        {
                rec_temp = USART_ReceiveData(USART1);
               
                if(rec_temp == 'a' )
                {
                        for( int i = 0; TxBuf3 != '\0'; i++)
                        {
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
                                USART_SendData(USART1 , TxBuf3);
                        }
                }                    
        }
}


[/mw_shl_code]
回复

使用道具 举报

9

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2016-7-4
在线时间
47 小时
发表于 2016-8-1 15:33:15 | 显示全部楼层
小叶 发表于 2016-8-1 12:08
[mw_shl_code=c,true]#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include "misc.h"

    for( i = 0; TxBuf != '\0'; i++)
    {
        while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
        USART_SendData(USART1 , TxBuf);
    }
    for( i = 0; TxBuf1 != '\0'; i++)
    {
        while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
        USART_SendData(USART1 , TxBuf1);
    }
TxBuf和TxBuf1都没有副新的值,肯定只有你赋的初值啊
回复

使用道具 举报

15

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2016-7-15
在线时间
88 小时
 楼主| 发表于 2016-8-1 16:43:03 | 显示全部楼层
Randy.zhang 发表于 2016-8-1 15:33
for( i = 0; TxBuf != '\0'; i++)
    {
        while(USART_GetFlagStatus(USART1, USART_FLAG_ ...

可是我另外一台电脑上能显示啊!你说程序错了的话怎么会不一样啊!而且你说的那两个起始程序最开头已经定义了里面的内容了呢

采集值

采集值
回复

使用道具 举报

9

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
金钱
228
注册时间
2016-7-4
在线时间
47 小时
发表于 2016-8-1 16:53:38 | 显示全部楼层
小叶 发表于 2016-8-1 16:43
可是我另外一台电脑上能显示啊!你说程序错了的话怎么会不一样啊!而且你说的那两个起始程序最开头已经定 ...

那你就加断点进行调试,看是否进了while里面的if判断内
回复

使用道具 举报

6

主题

17

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2016-8-23
在线时间
5 小时
发表于 2016-9-7 15:36:31 | 显示全部楼层
正点原子 发表于 2016-7-29 20:06
你下载串口通信实验,测试下。

原子哥,我也是遇到这样的问题了,串口通信实验可以,那个跑马灯的就没数据,用的是光盘里面带的程序源码啊
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-3-22
在线时间
3 小时
发表于 2022-12-4 20:45:46 | 显示全部楼层
原子哥,我是f103开发板,串口通信实验程序示例下载到开发板后,调试助手没有接收到数据?这是什么问题?
屏幕截图 2022-12-04 204357.png
屏幕截图 2022-12-04 204326.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 20:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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