本帖最后由 聪聪哥哥 于 2025-2-26 14:10 编辑
一:STM32L562E-DK 串口知识分享
通用同步/异步接收机发射机(USART)
这些设备有三个嵌入式通用同步接收器发送器(USART1、USART2和USART3)和两个通用异步接收器发送器(UART4、UART5)。
这些接口提供异步通信、IrDASIRENDEC支持、多处理器通信模式、单线半双工通信模式,并具有LIN主从功能。它们提供CTS和RTS信号的硬件管理以及RS485驱动器的启用。它们能够以高达10 Mbit/s的速度进行通信。
USART1、USART2和USART3还提供智能卡模式(符合ISO7816标准)和类似SPI的通信功能。
所有的USART都有一个独立于CPU时钟的时钟域,允许USARTx(x=1,2,3,4,5)使用高达200Kbaud的波特率将MCU从停止模式唤醒。从停止模式唤醒的事件是可编程的,可以是:
起始位检测
任何接收到的数据帧
特定的程序化数据帧
DMA控制器可以为所有USART接口提供服务。
二:原理图绘图分享:
这里我使用的是串口3,引脚为PC10,PC11;这里我们需要外接拓展板,图片资料如下所示:
可以看到,在该拓展板上面,可以看到引出了不少的IO口,方便我们进行调试;这里有一点需要注意的是,串口3的引脚进行的引脚的复用,我们需要切换一下,如下原理图所示:
这里ST公司的推出的模拟开关-多路复用器_STG3692QTR,要不然串口输出配置正常。
三:STM32cube MX 配置
这里记得要配置一下,中断的使能位;
软件编写流程如下所示:
首先串口时钟使能,GPIO时钟使能: __HAL_RCC_UART3_CLK_ENABLE();
GPIO端口模式设置: __HAL_RCC_GPIOC_CLK_ENABLE();
串口参数初始化:static void MX_UART3_UART_Init(void)
开启中断并且初始化 HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
使能串口: HAL_NVIC_EnableIRQ(USART3_IRQn);
编写串口发送函数:
将输出 发送至串口,通过串口工具和USB转TTL线进行监测
四:软件代码如下:
定义一下输出数据
/* USER CODE BEGIN PV */
const uint8_t OUTPUT_str[] = "Hello STM32L562! Hello 21IC 论坛! Autor by congconggege \r\n";
/* USER CODE END PV */
编写 输出代码如下:
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_12);
HAL_Delay(500);
HAL_UART_Transmit(&huart3,OUTPUT_str,sizeof(OUTPUT_str),100);
五:测试图片如下所示:
上位机监测图如下所示:
PDF资料如下所示:
C2971714_模拟开关-多路复用器_STG3692QTR_规格书_WJ169704.PDF
(435.5 KB)
mb1280-3v3-c01-schematic.pdf
(1.44 MB)
测试代码超过限制了,直接使用cube 软件生成就好了,只是查看原理图比较浪费时间;
|