单片机串口打印printf函数显示内容(固件库开发)

devtools/2025/2/3 12:34:08/

1.hal_usart.c 文件

#include <stdio.h>
#include "hal_usart.h"
#include "stm32F10x.h"//**要根据 使用的是哪个串口 对应修改 串口号   eg:USART1**
void USART_PUTC(char ch)
{/* 等待数据寄存器为空 */while((USART1->SR & 0x40) == 0);/* 写入数据寄存器 */USART1->DR = (uint8_t)ch;
}
//重指向#pragma import(__use_no_semihosting)struct __FILE
{int handle;
};FILE __stdout;void _sys_exit(int x)
{x = x;
}int fputc(int ch, FILE *f)
{if (ch == '\n'){USART_PUTC('\r');}USART_PUTC(ch);return ch;
}static void hal_usart_Config(void);void hal_UsartInit()
{hal_usart_Config();printf("FreeRtos教程学习\n\r");
}static void hal_usart_Config(void)
{ GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure; 
//	NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1,ENABLE);/****************GPIO Setting *******************************************/
//  USART1_TX -> PA9 , 		GPIO_InitStructure.GPIO_Pin = DEBUF_TX_PIN;	         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_TX_PORT, &GPIO_InitStructure);		   
//  USART1_RX ->	PA10GPIO_InitStructure.GPIO_Pin = DEBUF_RX_PIN;	        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(DEBUG_RX_PORT, &GPIO_InitStructure);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_Rx | USART_Mode_Tx;USART_Init(DEBUG_USART_PORT, &USART_InitStructure); // NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;// NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//// NVIC_Init(&NVIC_InitStructure);	//// USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//// USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//// USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//// USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);//USART_Cmd(USART1, ENABLE);                    ///
}//
///
void USART1_IRQHandler(void)
{//unsigned char dat;if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET){							//dat = USART_ReceiveData(USART1);USART_ClearITPendingBit(USART1,USART_IT_RXNE);}
}

2. hal_usar.h 文件

说明:要根据不同单片串口引脚的不同,来改变修改对应引脚

#ifndef _HAL_USART_H
#define _HAL_USART_H#define DEBUG_TX_PORT	GPIOA         //根据使用串口的 RX,TX 引脚的不同来修改头文件即可
#define DEBUF_TX_PIN	GPIO_Pin_9
#define DEBUG_RX_PORT	GPIOA
#define DEBUF_RX_PIN	GPIO_Pin_10
#define DEBUG_USART_PORT	USART1    //根据利用哪个串口来做Debug口  这里就设置为哪个串口void hal_UsartInit(void);#endif

3. 后续使用printf函数时,加入对应头文件,就能显示想要显示的内容

#include <stdio.h>


http://www.ppmy.cn/devtools/155717.html

相关文章

[LeetCode]day4 977.有序数组的平方

977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 一.题目 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&a…

【工欲善其事】利用 DeepSeek 实现复杂 Git 操作:从原项目剥离出子版本树并同步到新的代码库中

文章目录 利用 DeepSeek 实现复杂 Git 操作1 背景介绍2 需求描述3 思路分析4 实现过程4.1 第一次需求确认4.2 第二次需求确认4.3 第三次需求确认4.4 V3 模型&#xff1a;中间结果的处理4.5 方案验证&#xff0c;首战告捷 5 总结复盘 利用 DeepSeek 实现复杂 Git 操作 1 背景介绍…

Windows socket之WSAEventSelect模型_wsaeventselect模型的socket编程和客户端应用的功能

WSAEVENT hEvent,LPWSANETWORKEVENTS lpNetworkEvents);该函数可以查找发生在套接字上的网络事件&#xff0c;并清除系统内部的网络事件记录&#xff0c;重置事件对象。s为发生网络事件的套接字句柄。hEvent为被重置的事件对象句柄&#xff08;可选)。lpNetworkEvents为指向WSA…

【回溯+剪枝】回溯算法的概念 全排列问题

文章目录 46. 全排列Ⅰ. 什么是回溯算法❓❓❓Ⅱ. 回溯算法的应用1、组合问题2、排列问题3、子集问题 Ⅲ. 解题思路&#xff1a;回溯 剪枝 46. 全排列 46. 全排列 ​ 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 …

LeetCode 344: 反转字符串

LeetCode 344: 反转字符串 - C语言题解 这道题的目标是反转一个字符数组&#xff08;字符串&#xff09;。我们将通过双指针法来实现这一功能。 代码实现 #include <stdio.h>void reverseString(char* s, int sSize) {int left 0, right sSize - 1; // 定义左右指针…

一元函数微积分的几何应用:二维平面光滑曲线的曲率公式

文章目录 前言曲率和曲率半径的定义曲率计算公式参数方程形式直角坐标显式方程形式极坐标形式向量形式 前言 本文将介绍二维平面光滑曲线的曲率定义以及不同形式的曲率及曲率半径公式的推导。 曲率和曲率半径的定义 &#xff08;关于二维平面光滑曲线的定义以及弧长公式请参…

使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践

Singbox GUI 实践 最近用 Tauri Next.js 做了个项目 - Singbox GUI&#xff0c;是个给 sing-box 用的图形界面工具。支持 Windows、Linux 和 macOS。作为第一次接触这两个框架的新手&#xff0c;感觉收获还蛮多的&#xff0c;今天来分享下开发过程中的一些经验~ 为啥要做这个…

流媒体娱乐服务平台在AWS上使用Presto作为大数据的交互式查询引擎的具体流程和代码

一家流媒体娱乐服务平台拥有庞大的用户群体和海量的数据。为了高效处理和分析这些数据&#xff0c;它选择了Presto作为其在AWS EMR上的大数据查询引擎。在AWS EMR上使用Presto取得了显著的成果和收获。这些成果不仅提升了数据查询效率&#xff0c;降低了运维成本&#xff0c;还…