这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【DIY手势翻页笔】手势翻页笔-过程贴:课程一printf输出

共1条 1/1 1 跳转至

【DIY手势翻页笔】手势翻页笔-过程贴:课程一printf输出

菜鸟
2024-06-30 09:22:12     打赏

编译软件:MDK5.38a,调试器使用板载的ST-linkV3(速度要快很多)

一:利用STM32cubeMX配置一下,串口的初始化;

查看一下原理图:

STM32H503RB使用的串口3,引脚使用PA3PA4引脚

 1.1.png

ST-linkV3调试器版图:

 1.2.png

打开STM32cubeMX软件配置一下串口3的底层驱动部分

 

串口3配置完成后,点击“generate code”,底层驱动就配置好了;

二:代码编写

2.1打开软件生成的工程代码,需要在main.c中添加3个文件,如下所示:

 1.5.png

#include "stdio.h"
#include "string.h"
#include "stdint.h"

定义输出数组:

 1.6.png

const uint8_t hello_str[] = "Hello EEPW & DigiKey! Hello STM32H503!\r\n";

在主函数中利用系统滴答定时器的延时功能延时500ms,通过串口3HAL_UART_Transmit函数将数组发送出来,并通过串口工具查看一下:

编译一下代码,查看一下没有问题,演示视频如下

 任务1:串口输出 00_00_00-00_00_30.gif

下面我是用printf数据出一下

首先我们需要将串口3重定义一下:

/*串口3重定义*/

int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}

需要注意的是:将代码写在用户区,否则再次生成的时候,代码就会被覆盖;

需要配置一下代码使用lib功能,否则printf功能不能正常实现:

主程序代码如下:

if
(function == 0)
{
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
HAL_UART_Transmit(&huart3,hello_str,sizeof(hello_str),100);
}
else if(function == 1)
{
printf(" Hello EEPW & DigiKey! Hello STM32H503!\r\n");
HAL_Delay(500);  
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);  
HAL_Delay(500);  
printf(" Hello congconggege! Hello world!\r\n");  
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);  
HAL_Delay(500); 
}

这里需要将 程序功能定义为 1

打开串口调试工具:配置串口的波特率115200,选择端口号,配置:校验位 :无校验 停止位:1

下载验证一下功能是否正常。视频如下:

任务1:print输出测试 00_00_00-00_00_30.gif

视频效果:板载LED灯以500ms时间间隔闪烁,同时输出两组不同的字符串,功能正常。

TEST01_PRINTF.zip





关键词: STM32H750          printf     串口    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]