156|0

378

帖子

0

TA的资源

一粒金砂(高级)

【全能小网关|CH32V208】--2.串口打印 [复制链接]

      本篇讲述开发板串口打印功能。串口打印可以辅助开发阶段调试和测验。

一.硬件原理与准备

      查阅datasheet可看到PA9、PA10可配置成串口USART1_TX、USART1_RX,如下图

1_引脚配置.jpg
图1:串口引脚选择

      查阅原理图串口部分接口如下图2。同时,安装好WCH-LinkE具有串口功能,硬件连接好如下图3

2_硬件连接.jpg
图2:硬件连接原理
3_串口连接.jpg
图3:串口连接

 

二.代码准备

1.初始化串口UART1,配置波特率115200.

/* UART Printf Definition */
#define DEBUG_UART1    1
#define DEBUG_UART2    2
#define DEBUG_UART3    3

/* DEBUG UATR Definition */
#ifndef DEBUG
#define DEBUG   DEBUG_UART1
#endif

void USART_Printf_Init(uint32_t baudrate)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

#if(DEBUG == DEBUG_UART1)
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

#elif(DEBUG == DEBUG_UART2)
    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_Init(GPIOA, &GPIO_InitStructure);

#elif(DEBUG == DEBUG_UART3)
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

#endif

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

#if(DEBUG == DEBUG_UART1)
    USART_Init(USART1, &USART_InitStructure);
    USART_Cmd(USART1, ENABLE);

#elif(DEBUG == DEBUG_UART2)
    USART_Init(USART2, &USART_InitStructure);
    USART_Cmd(USART2, ENABLE);

#elif(DEBUG == DEBUG_UART3)
    USART_Init(USART3, &USART_InitStructure);
    USART_Cmd(USART3, ENABLE);

#endif
}

2.main函数打印系统时钟、芯片ID

int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    SystemCoreClockUpdate();
    Delay_Init();
    USART_Printf_Init(115200);
    printf("Uart Init\r\n");
    printf("SystemClk:%d\r\n", SystemCoreClock);
    printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );

    printf("Run printf success\r\n");

    while(1)
    {
    }
}

3.编译烧录

 

三.测试

      烧录后复位,可看到串口打印如下

4_串口打印.jpg
图4:串口打印

      至此,实现串口打印功能。


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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
protel快捷键大全 经典!!!

作者:qiy8106 来源:中国PCB技术网 tab??启动浮动图件的属性窗口 pgup??放大窗口显示比例 pgdn??缩小窗口显示比例 end??刷新 ...

protel dxp中intel的元件库

希望对大家有用!

决战2011全国大学生电子设计竞赛——寒假篇(下)

电设竞赛应该准备好哪些理论基础?——这点在这套电设竞赛备战攻略中之后会详细展开叙述 ...

我的数控电源基本完成

由于工作比较忙!基本能实现功能,精度及稳定性有待提高 1,应该是811把计算好的电压,电流值发送给PC或就地LCD上显示,可是我 ...

请问 485通讯中,我测了一下,控制器和表端的485模块的485线之间的电压都在3V左右

请问 485通讯中,我测了一下,控制器和表端的485模块的485线之间的电压都在3V左右,请问比如 接收端在接收到控制端的读表指令之 ...

DSP 中断配置的简单实例

中断的配置是与PIE模块的响应机制完全对应的。 对外部中断 XINT1进行配置。 第一步: 基础的初始化之后,对PIE模块进行指定, ...

树莓派Pico出来了~本来说好年前不推测评的我,又给大家来推这款板子了~~

啦啦啦啦啦~~~想必已经很多小伙伴都知道树莓派Pico的消息了。 管管我也第一时间去购入啦~~所以,小伙伴们,看这里看这里~~ ...

【CW32L052R8T6评估板测评】三、CW32L052与STM32L052的资源对比

本帖最后由 皓月光兮非自明 于 2023-8-3 18:59 编辑 三、资源对比 既然是与STM32L052R8TC对位,自然少不了产品评估对比: ...

采用3片AD7606BSTZ设计的24路采集电路

本帖最后由 地瓜patch 于 2023-10-25 23:01 编辑 AD7606BSTZ是一款由Analog Devices Inc.生产的集成电路,它是一个8通道的DAS ...

关闭
站长推荐上一条 1/10 下一条

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

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

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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