小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序
小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序
一、硬件连接
通过查看原理图我们可以看到,当【UART通信选择开关】拨向【AT-MCU】时,USB虚拟串口连接到MCU的UART0,我们只需要将开关拨到【AT-MCU】。
二、编写USART驱动程序
在Hardware
文件夹下新建uart.c
文件并添加到工程中,在include
文件夹下新建uart.h
文件。
编写uart.h
文件,定义一个串口1初始化函数:
#ifndef __USART_H
#define __USART_H#include <stdio.h>
#include "gd32f30x.h"/* 串口0初始化,参数为波特率 */
void uart0_init(uint32_t bound);#endif
然后我们在usart.c
中实现串口初始化函数
/* USART0串口初始化函数* 参数:波特率* 返回值:无 */
void uart0_init(uint32_t bound)
{ /* 使能 GPIOA 时钟 */rcu_periph_clock_enable(RCU_GPIOA);/* 使能 USART0 时钟 */rcu_periph_clock_enable(RCU_USART0);/* PA9 复用为 USART0_Tx */gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_9);/* PA10 复用为 USARTx_Rx */gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ,GPIO_PIN_10);/* USART0 初始化配置 */usart_deinit(USART0);usart_baudrate_set(USART0, bound); /* 设置波特率 */usart_receive_config(USART0, USART_RECEIVE_DISABLE); /* 禁止接收 */usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); /* 使能发送 */ usart_enable(USART0);
}
接下来将C库的printf函数重定向到USART0
/* 加入以下代码,支持printf函数,而不需要选择use MicroLIB */
#if 1
#pragma import(__use_no_semihosting)
/* 标准库需要的支持函数 */
struct __FILE
{ int handle; }; FILE __stdout;
/* 定义_sys_exit()以避免使用半主机模式 */
void _sys_exit(int x)
{ x = x;
}
/* 重定义fputc函数 */
int fputc(int ch, FILE *f)
{ while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)); usart_data_transmit(USART0, (uint8_t)ch);return ch;
}
#endif
这样usart.c
就编写好了
三、打印Hello world!
接下来我们在main.c
中添加usart.h
头文件包含,然后初始化USART0,每隔两秒中打印一次Hello world!,
#include "gd32f30x.h"
#include "systick.h"
#include "usart.h"int main(void)
{/* 配置系统时钟 */systick_config();/* 初始化LED */led_init();/* 初始化USART0 */uart0_init(115200);while(1){/* 通过串口打印 Hello world! */printf("Hello world! \r\n");/* turn on LED */LED(1);delay_1ms(1000);/* turn off LED */LED(0);delay_1ms(1000);}
}
另外,我们需要注意的时,要把usart的固件库文件添加进来:
接下来编译,烧录到开发板,在串口调试助手可以看到,成功打印Hello world!
四、附录
完整代码我存放在码云,可以查看:https://gitee.com/william_william/BearPi-GD32F303RGT6.git
上一篇:小熊派gd32f303学习之旅(2)—新建工程点亮第一个LED灯
下一篇:小熊派gd32f303学习之旅(4)—使用DMA实现串口打印
小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序相关推荐
- 小熊派gd32f303学习之旅(4)—使用DMA实现串口打印
小熊派gd32f303学习之旅(4)-使用DMA实现串口打印 一.前言 在上一篇文章(串口打印第一个Hello world程序)我们使用重定义fputc函数的方式实现了串口打印,但是这种方式本质上是在 ...
- 小熊派gd32f303学习之旅(7)—使用PWM实现LED呼吸灯
小熊派gd32f303学习之旅(7)-使用PWM实现LED呼吸灯 一.前言 通过查看gd32f30x的参考手册,可以知道gd32f303的通用定时器和高级定时器可以硬件生成PWM波,然后我们查看gd3 ...
- STM32学习之旅④ USART串口和上位机通信
STM32系列博客: STM32学习之旅① 开发环境搭建 STM32学习之旅② 固件库的使用及工程模板的建立 STM32学习之旅③ 从点灯到代码移植 STM32学习之旅④ USART串口和上位机通信 ...
- 小豆包的学习之旅:里程计运动模型
星球大战里面有2个非常出色的机器人一个是3PO,一个是R2.我的机器人呢就叫小豆包啦,代号FR2,不许侵犯它的署名哦. 常见的机器人运动模型包括:速度计运动模型,里程计运动模型和惯导运动模型.概率运动 ...
- python打字效果_Python学习之旅:用Python制作一个打字训练小工具
一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. Python资源共享群:626017123 别人眼中的程序员:飞快的敲 ...
- Python学习之旅:用Python制作一个打字训练小工具
一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码 ...
- STM32CubeMX学习之旅1:点亮一个LED灯
本学习采用"STM32CubeMX + MDK-ARM"的开发工具组,内部利用ST主推的HAL(Hardware Abstraction Layer,硬件抽象层)库,对新大陆的M3 ...
- 《Go语言从入门到实战》学习笔记(2)——编写第一个Go语言程序
本节内容主要侧重于环境构建以及经典代码的编写. 一.开发环境构建 GOPATH在1.8版本之前设置这个环境变量 1.8版本后(含1.8)如果没有设置使用默认值,在Unix上默认为$HOME/go,在W ...
- RT-ThreadBearPi 开发笔记 -- 小熊派基于RT-Thread使用ESP8266进行网络连接
小熊派基于RT-Thread使用ESP8266进行网络连接 物联网的概念和应用场景,最关键最必不可少的一个环节,就是联网.可以说,如果没有可靠的网络连接功能,那这个设备还不算是一个合格的物联网设备. ...
最新文章
- BCH两周年独立日已至,世界各地爱好者纷纷举办Meetup庆祝
- java 打印map后的输出
- linux cp 强制yes,linux cp实现强制覆盖
- Vue项目中遇到了大文件分片上传的问题
- TensorFlow基础(1)-中使用多个 Graph
- NET牛人应该知道些什么
- 如何彻底解决烦人的 MySQL 分库分表问题?写一个更好的数据库!
- 2.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的安装和基本概念
- centos7.5 mysql5.6_Centos7下完美安装并配置mysql5.6
- python牛顿迭代法求平方根_Python编程如何实现二分法及牛顿迭代法求平方根代码...
- C语言运算优先级记忆口诀
- 小白教程:Python爬取12306车票信息以及后期数据处理
- 金鳞岂是池中物IT评论博客正式成立
- 【DB宝36】使用Docker分分钟搭建漂亮的prometheus+grafana监控
- Elite教程系列(一):快速上手
- 每页多张幻灯片密集打印的设置技巧
- 车载应用--AUXIN 利用 surfaceView 预览 Camera 数据
- 个人项目(二)-- 自助点餐系统
- 二极管质量好坏判断方法,轻松学会-通程创品
- 机器视觉毕业设计 Python图像拼接算法研究与实现 - opencv
热门文章
- 互联网注定被抛弃,未来30年属于硬科技!深层逻辑是这样的
- 洛谷P5322 [BJOI2019]排兵布阵【分组背包】
- ds18b20温度报警C语言程序,单片机中使用DS18B20温度传感器C语言程序(参考4)
- edger多组差异性分析_用R实现批量差异分析(t检验和方差分析),自己算P值
- 二级路由dhcp关闭连不上wifi_如何解决家里Wifi能连接,但上不去网怎么办?
- 华三(H3C)单臂路由
- wildcard 的理解
- 【基础】603- 深入分析Session和Cookie
- StringPool详解
- 您选择的不是数据库安装目录_您不是您的数据,但您的数据仍然是您