【STM32学习】cubemx配置,串口的使用,串口发送接收函数使用,以及串口重定义、使用printf发送

1、串口的基本配置

选择USART1,选择异步通信,设置波特率

选择后,会在右边点亮串口

串口引脚是用来与其他设备通信的,如在程序中打印发送信息,电脑上打开串口助手,就会收到信息。

串口的发送接收,建议使用中断,如图点击

2、串口的发送接收函数

HAL_UART_Transmit():串口发送数据,使用超时管理机制

HAL_UART_Receive():串口接收数据,使用超时管理机制

HAL_UART_Transmit_IT():串口中断模式发送

HAL_UART_Receive_IT():串口中断模式接收

HAL_UART_Transmit_DMA():串口DMA模式发送

HAL_UART_Transmit_DMA():串口DMA模式接收

如:串口发送

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

HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);

3、串口重定义

在需要使用printf函数发送数据时,可以在所在文件添加串口重定义:

复制代码
#include "stdio.h"

#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}

4、printf串口使用卡死问题

问题描述:

配置了串口,对printf函数也进行了重定义,编译的时候也没错,但下载进程序的时候就会死机。

如图:一旦使用printf函数,就会死机,使用HAL_UART_Transmit_IT串口发送就能正常进行。

解决方案:

点击魔法棒,勾选这个。然后就能使用printf函数打印输出了。

5、串口发送

使用HAL_UART_Transmit_IT串口发送

若对printf重定义后,可以使用printf发送:printf("ddd\r\n");

6、串口接收

串口接收需要定义串口接收回调函数;

先在int main主函数中,添加HAL_UART_Receive_IT(&huart1,(uint8_t *)&rxbuff1,1);串口接收函数,变量还得自己定义。

之后,在main主文件中,找个位置,定义串口接收回调函数。

复制代码
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if (huart->Instance == USART1)
	{
		
		if (rxbuff1 == '\n')
		{
			printf("发送的数据是:%s\r\n",uart1_txbuff);   //发送回显语句
			uart1_rx_cnt = 0;
		}
		else
		{
		uart1_txbuff[uart1_rx_cnt]=rxbuff1;
		uart1_rx_cnt ++;
		}
		HAL_UART_Receive_IT(&huart1,(uint8_t *)&rxbuff1,1);
		
	}
}
相关推荐
我在人间贩卖青春1 小时前
SysTick 定时器
单片机·嵌入式硬件·滴答定时器·systick
llilian_161 小时前
IRIG-B码产生器立足用户痛点,提供精准授时解决方案
大数据·数据库·功能测试·单片机·嵌入式硬件·测试工具
淮北4947 小时前
vim学习进阶
学习·编辑器·vim
busideyang8 小时前
为什么推挽输出不能接收串口数据,而准双向口可以?
c语言·stm32·单片机·嵌入式硬件·嵌入式
智者知已应修善业8 小时前
【proteus中lm339电压滞回比较器达到三角波转换成方波】2023-4-13
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
济6178 小时前
STM32定时器进阶:从模式控制器完全指南,一文学会TRGI/TRGO---STM32 HAL库专栏
stm32·单片机·嵌入式·stm32hal库编程
551只玄猫8 小时前
新编大学德语1第三版笔记 第5课Essen und Trinken
笔记·学习笔记·德语·外语·德语a1·自学德语·新编大学德语
sayang_shao9 小时前
ARM架构运行模式学习笔记
arm开发·学习·架构
鲨辣椒100869 小时前
单片机在线演绎《当幸福来敲门》------ 中断机制
单片机·嵌入式硬件
不只会拍照的程序猿10 小时前
《嵌入式AI筑基笔记02:Python数据类型01,从C的“硬核”到Python的“包容”》
人工智能·笔记·python