搜索
查看: 2248|回复: 7

[求助] stm32L072芯片LPUART1接收发送失败问题

[复制链接]

该用户从未签到

12

主题

21

帖子

0

蝴蝶豆

中级会员

最后登录
2023-11-28
发表于 2020-12-7 17:47:56 | 显示全部楼层 |阅读模式

使用stm32扩展库开发L072系列时发现,初始化LPUART1后,所得到得波特率与电脑实际接受不符,且只有波特率在9600以上,串口才不会进入溢出中断。但接受数据仍然不对,初始化如下:
void Usart_Config(void)
{   

GPIO_InitTypeDef  GPIO_InitStructure;
   
    HAL_NVIC_DisableIRQ(RNG_LPUART1_IRQn);
    HAL_NVIC_SetPriority(RNG_LPUART1_IRQn, 1, 0);
    HAL_NVIC_EnableIRQ(RNG_LPUART1_IRQn);
   
    GPIO_InitStructure.Pin = GPIO_PIN_10 | GPIO_PIN_11;//RS485-LPUART1
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStructure.Alternate = GPIO_AF4_LPUART1;
    GPIO_InitStructure.Pull = GPIO_PULLUP;
    GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
   
   
    Usart1_Init(115200);
}

void Usart1_Init(uint32_t BaudRate)
{
    UART_HandleTypeDef USART_InitStructure;
   
    __HAL_RCC_LPUART1_RELEASE_RESET();
    __HAL_RCC_LPUART1_CLK_ENABLE();
     
    LPUART1->CR1 &=0;
    LPUART1->CR1 |= 3<<2;
    LPUART1->BRR = BaudRate;
   
    LPUART1->CR1 |= USART_CR1_UE;//使能串口
        
    LPUART1->CR1 &= ~(uint32_t)BIT7;//禁止发送中断
    LPUART1->CR1 |= BIT5;//使能接受中断

    LPUART1->ICR &= ~(uint32_t)UART_CLEAR_OREF;
}

测试发现,发送一个字节数据时,电脑接受到三个字节数据,求大神指点!


回复

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2020-12-7 18:19:27 | 显示全部楼层
确定一下串口的数据位、停止位等配置是否和电脑一直。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

蝴蝶豆

初级会员

最后登录
2020-12-8
发表于 2020-12-7 21:58:02 | 显示全部楼层
硬件有没有连接错误,
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

339

帖子

3

蝴蝶豆

金牌会员

最后登录
2021-4-7
发表于 2020-12-8 10:07:08 | 显示全部楼层
发送一个字节数据时,电脑接受到三个字节数据
一般是波特率不对应的问题
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

108

帖子

0

蝴蝶豆

高级会员

最后登录
2021-4-2
发表于 2020-12-8 10:10:27 | 显示全部楼层
很有可能是你PC上的波特率设置错了,检查一下你串口助手的波特率。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

77

帖子

0

蝴蝶豆

初级会员

最后登录
2021-1-8
发表于 2020-12-24 11:52:41 | 显示全部楼层
多半是设置问题,还有就是发送一个字节加一些延时看看。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

60

帖子

30

蝴蝶豆

高级会员

最后登录
2021-2-25
发表于 2020-12-25 08:22:27 | 显示全部楼层
LPUART1->BRR = BaudRate;
BRR不是这么用的
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2021-1-5 12:13:26 | 显示全部楼层
看一下实际发送的信号比较直接。用示波器量串口,直接看到波特率,位数等配置是否正确,直接反映出配置的方式,这样找问题就更快更准些
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-13 17:42 , Processed in 0.184402 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表