PY32F002B从压缩包到实现串口printf输出

news/2025/4/2 5:03:13/

        最近学习使用芯领的PY32F002B开发板,记录学习历程供有同样需求的人参考。

        本文主要讲述利用开发板实现printf语句串口输出。

开发环境的初步搭建

官方提供了一个压缩文件,文件名py32f002B_231026.zip,

链接:https://pan.baidu.com/s/1JGihtm5hETasF_dGoiW6Ww?pwd=c3el
提取码:c3el
解压后,如图:

        进入“\py32f002B_231026\py32f002B_231026\pack\MDK”文件夹安装MDK支持包。

         进入“\py32f002B_231026\py32f002B_231026\应用软件”文件夹,复制PY32F002B_Firmware_V0.0.4目录到你想存放的文件夹。

        在复制好的PY32F002B_Firmware_V0.0.4文件夹下,新建一个自己命名的文件夹,我的是myProjects文件夹。

         进入复制的“\PY32F002B_Firmware_V0.0.4\Templates”文件夹,复制PY32F002Bxx_Templates文件夹到myProjects文件夹。

 把这个工程模版文件夹改名

 用MDK5打开工程文件,

 打开后工程目录

打开后什么都不做,直接编译,编译如图:

点击main.c前的加号,双击py32f002b_hal_conf.h打开文件,

由于本次目的是要使用串口,所以开启串口功能,取消50行的注释。

取消注释,开启串口功能

 

下面需要添加手动必要的文件,先点击下图按钮

在Groups里 建立“BSP/py32f030xx_Start_Kit”Group,并添加“\PY32F002B_Firmware_V0.0.4\Drivers\BSP\py32f002bxx_Start_Kit.c"

添加后的Group

 由于我们要使用uart相关函数,还要给添加“Drivers/PY32F002B_HAL_Driver”Goup添加py32f002b_hal_uart.c的文件。文件在”PY32F002B_Firmware_V0.0.4\Drivers\PY32F002B_HAL_Driver\Src”文件夹下。

添加后的效果

给C++添加头文件,点击魔术棒,找到C/C++ tab

点击如图按钮,

选择 \PY32F002B_Firmware_V0.0.4\Drivers\BSP\PY32F002Bxx_Start_Kit的文件夹

添加后的效果

 

 手动添加文件结束,再次编译工程。

下面给main.c添加代码,实现串口 printf输出。

双击工程树下的py32f002bxx_Start_Kit.c,进入文件,找到220行BSP_USART_Config(void)函数并复制名称,然后粘贴到main.c中进行串口初始化。

 修改main.c的效果,发现41句代码有红色波浪线,说明存在问题。

         我们这个函数是从py32f002bxx_Start_Kit.c中调用的,可能需要包含py32f002bxx_Start_Kit.h文件。在main.h中包含py32f002bxx_Start_Kit.h。

在工程树中点击main.c前的加号,找到main.h,并双击打开文件

 在34行添加:

#include "py32f002bxx_Start_Kit.h"

 回到main.c中,在while循环中添加如下语句,编译。

/* infinite loop */while (1){printf("Hello PY32!");HAL_Delay(1000);}

设置下载

点击魔术棒,找到Debug tab,点击其中Settings按钮

找到Flash Download tab,勾选Reset and Run

下载.

BSP_USART_Config(void) 使用PB4和PB5做为串口,具体见附图。

在串口软件中收到信息:

至此试验完成。


http://www.ppmy.cn/news/1226416.html

相关文章

基于spring-boot-starter-actuator不同版本(2.1.3和2.3.5)在K8s中做就绪存活检查相关配置的差异

今天遇到一个问题,K8s的Deployment在对某服务的POD进行健康检查的时候,由于直接copy了之前服务的相关配置导致就绪检查一直过不去,因而造成服务对应POD的READY状态一直处于0/1(期望是1/1)。 经排查发现,原…

搭建内部知识库,解决企业内部琐碎信息问题

企业内部面临着大量琐碎的信息,这些信息可能分散在各个部门、员工之间,导致查找和共享变得困难。这种情况下,搭建一个内部知识库可以解决这一问题。通过内部知识库,企业可以将琐碎的信息整理、分类,并提供一个集中存储…

MySQL 运算符二

逻辑运算符 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。 运算符号作用NOT 或 !逻辑非AND逻辑与OR逻辑或XOR逻辑异或 1、与 mysql> select 2 and 0; --------- | 2 and 0 | --------- | 0 | -…

报道 | 2023年12月-2024年2月国际运筹优化会议汇总

2023年12月-2024年2月召开会议汇总: The 16th Annual International Conference on Combinatorial Optimization and Applications (COCOA 2023) Location: Virtual Important dates: Conference: December 11, 2023 (Start) - December 13, 2023 (End) Details…

quickapp_快应用_tabBar

tabBar 配置项中配置tabBar(版本兼容)使用tabs组件配置tabBar语法示例问题-切换tab没有反应问题-数据渲染问题解决优化 问题-tab的动态配置 第三方组件tabbar 一般首页都会显示几个tab用于进行页面切换,以下是几种tab配置方式。 配置项中配置tabBar(版本兼容) 在m…

Spring 如何自己创建一个IOC 容器

IOC(Inversion of Control),意思是控制反转,不是什么技术,而是一种设计思想,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 在传统的程序设计中,我们直接在对象内部通过new进行对象创建…

Jenkins自动化部署一个Maven项目

Jenkins自动化部署 提示:本教程基于CentOS Linux 7系统下进行 Jenkins的安装 1. 下载安装jdk11 官网下载地址:https://www.oracle.com/cn/java/technologies/javase/jdk11-archive-downloads.html 本文档教程选择的是jdk-11.0.20_linux-x64_bin.tar.g…