STM32实战项目-串口打印

这篇具有很好参考价值的文章主要介绍了STM32实战项目-串口打印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

本小结主要实现串口打印功能,主要将上一结的状态机运行次数,通过串口在串口终端上打印出来,硬件电路上主要是TTL转USB驱动电路,软件上主要有状态机函数,串口发送函数等调试工具是串口助手。


目录

1.硬件电路

2.串口讲解 

 2.1定义

2.2协议

 3.软件编程

3.1参数配置 

 3.2程序结构

3.2.1程序框架

 3.2.2打印配置

3.2.3串口发送配置 

 4.效果展示



1.硬件电路

主要集成TTL转USB驱动,插入MicroUSB线即可使用。

2.串口讲解 

 2.1定义

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收

在单片机产品设计中,UART主要用于设备与设备之间的通讯,设备与传感器之间的通信。例如通过RS-485接口,构成工业设备系统总线。

2.2协议

 UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

其中各位的意义如下:

起始位:先发出一个逻辑"0"的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符,从最低位开始传送。

奇偶校验位:数据位加上这一位后,使得"1"的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。(一般这个位可以不设置,减少位数,提高传输数据量

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。(一般设置为1位高电平

空闲位:处于逻辑"1"状态,表示当前线路上没有资料传送。

波特率:衡量数据传送速率的指标。表示每秒钟传送的比特位。(不同使用场景设置不同波特率,对数据要求准确,较少传输速率

图示如下:

stm32串口打印,stm32,单片机,嵌入式硬件

 3.软件编程

3.1参数配置 

 串口打印函数需要配置串口参数,我们需要配置cubemax相关参数,主要是串口的引脚,波特率,有效数据个数,停止位,采样次数,奇偶校验位,主要配置如下:

stm32串口打印,stm32,单片机,嵌入式硬件

 3.2程序结构

3.2.1程序框架

 文章来源地址https://www.toymoban.com/news/detail-587646.html

 整体框架没有发生变化,配置完串口之后,会自动生成串口源文件。且源文件中会自动生成我们配置好参数的代码:

void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    Error_Handler();
  }

}

 3.2.2打印配置

我们要实现串口显示状态机运行次数,首先我们需要在run函数部分增加打印函数,这样才可以通过串口发送到终端显示,代码如下:

 

static void Run()
{
	static uint16_t STA_Cnt = 1;
	
		
	if(STA_Machine.ucSTA_Machine_Status == STA1)
	{
		printf("״̬»úµÚ%d´ÎÔËÐÐ!\r\n",STA_Cnt++);
	}
	
	//ÔËÐÐ״̬»ú
	switch(STA_Machine.ucSTA_Machine_Status)
	{
		case STA1: STA_Machine.Fun_STA1();	printf("״̬»ú״̬ΪSTA1\r\n");     break;
		case STA2: STA_Machine.Fun_STA2();	printf("״̬»ú״̬ΪSTA2\r\n");     break;
		case STA3: STA_Machine.Fun_STA3();	printf("״̬»ú״̬ΪSTA3\r\n");     break;
		case STA4: STA_Machine.Fun_STA4();	printf("״̬»ú״̬ΪSTA4\r\n");     break;
		case STA5: STA_Machine.Fun_STA5();	printf("״̬»ú״̬ΪSTA5\r\n\r\n"); break;
		default: STA_Machine.ucSTA_Machine_Status = STA1; 
	}
}

为了方便清晰观察,我们可以在初始化部分,将版本号,测试说明放进去,具体代码如下:

static void Peripheral_Set(void); 

/* Public variables-----------------------------------------------------------*/
MyInit_t MyInit = 
{
	Peripheral_Set
};

/* Private function prototypes------------------------------------------------*/      


/*
	* @name   Peripheral_Set
	* @brief  ÍâÉèÉèÖÃ
	* @param  None
	* @retval None      
*/
static void Peripheral_Set()
{
	printf("----´Ë³ÌÐòʵÏÖ´®¿Ú´òÓ¡¹¦ÄÜ----\r\n");
	printf("Initialization completed, system startup!\r\n");
	printf("Software version is V%.1f\r\n\r\n",SoftWare_Version);
	
	printf("¿ªÊ¼ÔËÐÐÓÐÏÞ״̬»ú:\r\n\r\n");
}

3.2.3串口发送配置 

我们想使用串口发送函数,就要明白这个函数如何使用,以及传参的设置,该函数具体如下:

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

huart为串口号,pData是发送数据地址 需要注意的是 类型是八位的,Timeout是发送时限,超出这个时间,就是超时,需要重传。我们可以利用fput函数进行发送,具体代码如下:

int fputc(int ch,FILE* f)
{
	//查询方式循环发送
	HAL_UART_Transmit(&huart_debug, (uint8_t *)&ch, 1, 0x000A);

	return ch;
}

 4.效果展示

 

 

 

 

 

到了这里,关于STM32实战项目-串口打印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32实战项目-串口打印

    前言: 本小结主要实现串口打印功能,主要将上一结的状态机运行次数,通过串口在串口终端上打印出来,硬件电路上主要是TTL转USB驱动电路,软件上主要有状态机函数,串口发送函数等调试工具是串口助手。 目录 1.硬件电路 2.串口讲解   2.1定义 2.2协议  3.软件编程 3.1参

    2024年02月16日
    浏览(38)
  • 【STM32】单片机模式配置&FlyMcu串口下载固件&STLINK Utility

    目录 1 单片机模式配置 1.1 存储器映像 1.2 启动配置 1.3 启动模式选择 1.4 硬件展示 1.4.1 BOOT引脚配置: 1.4.2 USB转TTL 2 FlyMcu串口下载固件         2.1软件配置方式         2.2 选项字节 3 STLINK Utility 3.1 简介 3.2 下载程序流程 通过 设置选择管脚 ,对应到各种启动模式的不

    2024年01月20日
    浏览(61)
  • 使用DMA传输实现单片机高效串口转发——以STM32系列为例

    Date Author Version Note 2023.08.06 Dog Tao V1.0 1. 完成了文档的撰写。 2023.08.23 Dog Tao V1.1 1. 增加了STM32F103-USART2的DMA传输配置示例。 2. 增加了STM32F103与F407单片机的DMA控制器介绍并更改了第一章节的结构。 应用场景 在许多现实应用场景中,例如工业自动化控制、嵌入式通信设备等领域,

    2024年02月14日
    浏览(51)
  • 基于STM32单片机BOOTLOADER通过串口升级程序IAP——APP方案

                            此方法前提是你得有一个EEPROM         我用的单片机是STM32F103ZET6 , 此单片机FLASH容量为512KB; 在此单片机里面FLASH的起始地址是0X8000000,BOOT作为引导加载程序一般都是从这个地址开始,单片机一上点默认会从这个地址开始运行,所以将自己

    2024年02月04日
    浏览(60)
  • 基于STM32等单片机的项目作品汇总

    本篇记录下自己做的项目作品,作品有实物也有仿真,以实物居多,主要是以单片机为主,单片机有HC32,STM32,STC,51等,本人从事单片机行业5年,拥有丰富的经验。也涉及QT,LVGL,嵌入式,IPC等,如有需求,请私信。 项目名称 功能 文件 001_基于STM32的一键报警系统 一键紧急报

    2024年02月15日
    浏览(39)
  • 单片机项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(64)
  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月22日
    浏览(81)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(110)
  • 单片机毕设 stm32智能语音垃圾分类系统(项目开源)

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 毕业设计 stm32智能语音垃圾分类系统(项目开源) 大家可用于 课程设计 或 毕业设计 🧿 项目分享:见文末! 学长设计的系统主要使用 stm32单片机为基础设计并开发一个智能垃圾桶系统。该系统实现智能开盖, 垃

    2024年03月10日
    浏览(62)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包