455|11

65

帖子

0

资源

一粒金砂(中级)

【RISC-V MCU CH32V103测评】- 3:USART - 为什么试了三个串口工具都不行? [复制链接]

 
本帖最后由 MianQi 于 2021-2-2 11:07 编辑

这次测评的对象是:USART,依据是:《CH32V103应用教程——USART》。

 

首先,文档看过以后,有一点不明白,在第4页,关于"void USART ReceiveWakeUpCmd",介绍说,“功能:确定USART是否处于静音模式,不明白“WakeUp”何以对应“静音”。

 

其次,接线:

用了6根双母口的跳线:

WCH-Link               CH32V103C-RO-1v2

5v                            5v

GND                        GND

SWCLK                   SWCLK

SWDIO                    SWDIO

TX                            PA3

RX                            PA2

 

代码:

usart.h

#ifndef __USART_H
#define __USART_H

#include "ch32v10x_conf.h"

void USARTx_CFG(void);
void USARTx_SendByte(USART_TypeDef* pUSARTx, uint8_t data);
void USARTx_SendStr(USART_TypeDef* pUSARTx, char* str);

void USART2_IRQHandler(void);

#endif

usart.c

#include "usart.h"

void USART2_IRQHandler(void)__attribute__((interrupt("WCH-Interrupt-fast")));

void USARTx_CFG(void) {
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

    USART_DeInit(USART2);

    USART_InitStructure.USART_BaudRate = 115200;
    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_Tx | USART_Mode_Rx;

    USART_Init(USART2, &USART_InitStructure);
    USART_Cmd(USART2, ENABLE);
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);

    NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);
}

void USARTx_SendByte(USART_TypeDef* pUSARTx, uint8_t data) {
    USART_SendData(pUSARTx, data);
    while(USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
}

void USARTx_SendStr(USART_TypeDef* pUSARTx, char* str) {
    uint8_t i = 0;
    do {
        USARTx_SendByte(pUSARTx, *(str + i));
        i++;
    } while(*(str + i) != '\n');

    while(USART_GetFlagStatus(pUSARTx, USART_FLAG_TC) == RESET);
}

void USART_IRQHandler(void) {
    uint8_t ucTemp;
    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {
        USART_ClearITPendingBit(USART2, USART_IT_RXNE);
        ucTemp = USART_ReceiveData(USART2);
        USART_SendData(USART2, ucTemp);
    }
}

main.c

#include "debug.h"
#include "usart.h"

int main(void) {
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    USARTx_CFG();
    USARTx_SendStr(USART2, "This is a test string.\n");

    while(1);
}

上述代码,个别细节跟原文不一样,做了一点调整,但就是不做调整,依然是编译下载没有问题,却在Putty、Tera Term、VS Code三个串口工具中都没有显示,有谁知道这是为什么。


回复

7938

帖子

20

资源

版主

用示波器看看总线的波形呢?

点评

示波器测试的结果,PA2和PA3都没有输出信号。  详情 回复 发表于 2021-2-3 09:16
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

3313

帖子

1

资源

五彩晶圆(初级)

回环模式先测试一下。

个人签名人已离开,无事别找,找也找不到。

回复

3423

帖子

1

资源

版主

本帖最后由 damiaa 于 2021-2-2 16:44 编辑

连接不知道对不?应该可以通的。还有调试的时候要注意一下那个调试器驱动。看看是否好了。

 


回复

65

帖子

0

资源

一粒金砂(中级)

IMG_20210202_175623_LL.jpg

连接是这样。


回复

65

帖子

0

资源

一粒金砂(中级)

是我的串口调试工具的使用方法不对吗?我试了深圳宏晶的“stc-isp-15xx-v6”,也还是不行,都能找到串口,前三个都能提示已经连接上,但是看不到内容。


回复

1万

帖子

15

资源

版主

楼主接错线了吧,都在那个插排上接,怎么还有两根往大插排走了

点评

往大插排上去的是PA2和PA3。  详情 回复 发表于 2021-2-3 08:19
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

65

帖子

0

资源

一粒金砂(中级)

ddllxxrr 发表于 2021-2-2 20:09 楼主接错线了吧,都在那个插排上接,怎么还有两根往大插排走了

往大插排上去的是PA2和PA3。


回复

65

帖子

0

资源

一粒金砂(中级)

littleshrimp 发表于 2021-2-2 12:17 用示波器看看总线的波形呢?

示波器测试的结果,PA2和PA3都没有输出信号。

点评

PA2,PA3一个是单片机的数据发送,另一个是电脑的数据发送,你可以让电脑循环发送数据,看一下是不是有一条线上能看到数据。 然后你再把单片机的USARTx_SendStr放到循环里,这样能保证数据线上一直有数据,再用示  详情 回复 发表于 2021-2-3 09:46

回复

7938

帖子

20

资源

版主

MianQi 发表于 2021-2-3 09:16 示波器测试的结果,PA2和PA3都没有输出信号。

PA2,PA3一个是单片机的数据发送,另一个是电脑的数据发送,你可以让电脑循环发送数据,看一下是不是有一条线上能看到数据。

然后你再把单片机的USARTx_SendStr放到循环里,这样能保证数据线上一直有数据,再用示波器看一下。

点评

[attachimg]524147[/attachimg] 还没有按照你的说法做,现在测的结果,PA2和PA3都没有信号输出。  详情 回复 发表于 2021-2-3 10:12
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

1万

帖子

133

资源

管理员

问题解决了吗??有问题可以问下沁恒的技术@沁恒USB单片机

个人签名

玩板看这里:

http://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!


回复

65

帖子

0

资源

一粒金砂(中级)

littleshrimp 发表于 2021-2-3 09:46 PA2,PA3一个是单片机的数据发送,另一个是电脑的数据发送,你可以让电脑循环发送数据,看一下是不是有一 ...

IMG_20210203_091736.jpg

还没有按照你的说法做,现在测的结果,PA2和PA3都没有信号输出。


回复

65

帖子

0

资源

一粒金砂(中级)


刚才又逐行对照了一下教程,有两行代码的位置我调整了一下,恢复成教程里的位置。这是我打开串口的过程,有什么问题吗?

 

点评

试试使用GPIO模式用示波器看一下PA2和PA3能不能正常输出,排除硬件连接问题。  详情 回复 发表于 2021-2-4 08:37

回复

7938

帖子

20

资源

版主

MianQi 发表于 2021-2-3 18:28 刚才又逐行对照了一下教程,有两行代码的位置我调整了一下,恢复成教程里的位置。这是我打开串口的过程, ...

试试使用GPIO模式用示波器看一下PA2和PA3能不能正常输出,排除硬件连接问题。

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

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

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表