打印
[STM32U0]

STM32U083测评】-02-LPUART测试

[复制链接]
2818|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前段时间做了一下IO的测试,至少证明环境搭建是没有问题的,今天来测试一下我们LPUART,本来是打算用例程然后外加串口来进行测试的,但是现在少了一个外接的串口,我查了一下原理图,发现是接的是PA2和PA3,这个正好也是LPUART1的复用的引脚。


只要硬件支持了,就支持修改映射就行了,在此之前,我们需要修改Hall的配置,开启LPUART和LPTIM的使能


完成了之后我们就自己建立工程,


然后就是LPUART的初始化程序

具体的代码如下:

#include "LP_UART.h"


UART_HandleTypeDef LP_UART1;

void LP_UART_Init(void)
{
  __HAL_RCC_LPUART1_CLK_ENABLE();
        __HAL_RCC_GPIOA_CLK_ENABLE();  
       
        //--设置复用---
        GPIO_InitTypeDef  gpio_init_structure;
          /* Configure USART Tx as alternate function */
  gpio_init_structure.Pin       = GPIO_PIN_2;
  gpio_init_structure.Mode      = GPIO_MODE_AF_PP;
  gpio_init_structure.Speed     = GPIO_SPEED_FREQ_HIGH;
  gpio_init_structure.Pull      = GPIO_PULLUP;
  gpio_init_structure.Alternate = GPIO_AF8_LPUART1;
  HAL_GPIO_Init(GPIOA, &gpio_init_structure);

  /* Configure USART Rx as alternate function */
  gpio_init_structure.Pin       = GPIO_PIN_3;
  gpio_init_structure.Mode      = GPIO_MODE_AF_PP;
  gpio_init_structure.Alternate = GPIO_AF8_LPUART1;
  HAL_GPIO_Init(GPIOA, &gpio_init_structure);
       
       
       
  LP_UART1.Instance = LPUART1;
  LP_UART1.Init.BaudRate = 115200;
  LP_UART1.Init.WordLength = UART_WORDLENGTH_8B;
  LP_UART1.Init.StopBits = UART_STOPBITS_1;
  LP_UART1.Init.Parity = UART_PARITY_NONE;
  LP_UART1.Init.Mode = UART_MODE_TX_RX;
  LP_UART1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  LP_UART1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  LP_UART1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  LP_UART1.FifoMode = UART_FIFOMODE_DISABLE;
  if (HAL_UART_Init(&LP_UART1) != HAL_OK)
  {

  }
  if (HAL_UARTEx_SetTxFifoThreshold(&LP_UART1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  {

  }
  if (HAL_UARTEx_SetRxFifoThreshold(&LP_UART1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  {

  }
  if (HAL_UARTEx_DisableFifoMode(&LP_UART1) != HAL_OK)
  {

  }
}


void LP_UART_SendData(unsigned char *Data,unsigned int Len)
{
   HAL_UART_Transmit(&LP_UART1,Data,Len,200);
}

这个代码写好之后木就是Main函数了,其实很简单,闪个灯,发个消息就行了。

int main(void)
{

  HAL_Init();


  SystemClock_Config();

  __HAL_RCC_GPIOA_CLK_ENABLE();
  /* -2- Configure IO in output push-pull mode to drive external LEDs */
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

  GPIO_InitStruct.Pin = GPIO_PIN_5;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
        LP_UART_Init();
  while (1)
  {

    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    HAL_Delay(500);
                LP_UART_SendData("This is LPUART Demo!\r\n",22);

  }
  /* USER CODE END 3 */<img src="https://bbs.21ic.com/forum.php?mod=image&aid=2246468&size=300x300&key=65d009f6634f4b5c&nocache=yes&type=fixnone" border="0" aid="attachimg_2246468" alt="">
}


好了,我们来看看实际效果


这次的测试就到这里,LPUART的代码欢迎大家验证指教。

3 测试效果.png (139.49 KB )

3 测试效果.png

使用特权

评论回复
沙发
中国龙芯CDX| | 2024-4-28 17:33 | 只看该作者
LPUART,全称为Low Power UART,是一种低功耗串行通信接口。它主要应用在功耗限制且通信距离短的场景中。

使用特权

评论回复
板凳
mmuuss586| | 2024-4-29 09:18 | 只看该作者
这个是新出的STM32吧

使用特权

评论回复
地板
WoodData| | 2024-4-29 10:32 | 只看该作者
向大佬学习。看看低功耗模式下LPUART使用有啥注意的

使用特权

评论回复
5
shenxiaolin|  楼主 | 2024-4-29 10:32 | 只看该作者
mmuuss586 发表于 2024-4-29 09:18
这个是新出的STM32吧

是的游总

使用特权

评论回复
6
shenxiaolin|  楼主 | 2024-4-29 10:35 | 只看该作者
WoodData 发表于 2024-4-29 10:32
向大佬学习。看看低功耗模式下LPUART使用有啥注意的

欢迎大佬捧场

使用特权

评论回复
7
micoccd| | 2024-4-29 14:00 | 只看该作者
功耗表现有没有

使用特权

评论回复
8
yellow555| | 2024-4-29 21:08 | 只看该作者
接口是少在了哪里?

使用特权

评论回复
9
shenxiaolin|  楼主 | 2024-4-30 07:38 | 只看该作者
yellow555 发表于 2024-4-29 21:08
接口是少在了哪里?

如果你用其他的串口,就还需要外接串口线,试用串口1 的话就直接供电、调试、串口都是一个USB接口就可以了,不用外接串口调试线。

使用特权

评论回复
10
shenxiaolin|  楼主 | 2024-4-30 07:39 | 只看该作者
yellow555 发表于 2024-4-29 21:08
接口是少在了哪里?

没有测试

使用特权

评论回复
11
meiyaolei| | 2024-6-27 19:54 | 只看该作者
大佬写的非常详细,LPUART使用方法都上传,只是LPUART使用还有哪些需要注意。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:运达电气-产品经理
简介:毕业于西南科技大学,从事MCU、MPU开发工作近8年,熟悉嵌入式软硬件开发流程,产品管理以及现场项目管理。

90

主题

1107

帖子

5

粉丝