H743 LPUART1串口通讯 寄存器配置通讯失败 疑问

2019-07-20 04:04发布

H743芯片, USART1、2、3、6,UART4、5、7、8,原子的HAL库、寄存器均可以通信,唯独LPUART1串口HAL库使用没有问题,寄存器工程配置后,通讯失败。是不是还有其他寄存器没有配置
可有遇到过此问题的朋友?非常感谢。(工程以原子寄存器例程先测试的USART1,之后修改为LPUART1例程)

void uart_init(u32 pclk2,u32 bound)
{           
        u32        temp;          
        temp=(pclk2*1000000+bound/2)/bound;        //得到USARTDIV@OVER8=0,采用四舍五入计算
        RCC->AHB4ENR|=1<<0;           //使能PORTA口时钟  
        RCC->APB4ENR|=1<<3;          //使能串口LPUART1时钟       
        GPIO_Set(GPIOA,PIN9|PIN10,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);//PA9,PA10,复用功能,上拉输出
        GPIO_AF_Set(GPIOA,9,3);        //PA9,AF3
        GPIO_AF_Set(GPIOA,10,3);//PA10,AF3            
        //波特率设置
        LPUART1->BRR=temp;                 //波特率设置@OVER8=0        
        LPUART1->CR1=0;                         //清零CR1寄存器
        LPUART1->CR1|=0<<28;                 //设置M1=0
        LPUART1->CR1|=0<<12;                 //设置M0=0&M1=0,选择8位字长
        LPUART1->CR1|=0<<15;         //设置OVER8=0,16倍过采样
        LPUART1->CR1|=1<<3;          //串口发送使能
#if EN_LPUART1_RX                          //如果使能了接收
        //使能接收中断
        LPUART1->CR1|=1<<2;          //串口接收使能
        LPUART1->CR1|=1<<5;            //接收缓冲区非空中断使能                   
        MY_NVIC_Init(3,3,LPUART1_IRQn,2);//组2,最低优先级
#endif
        LPUART1->CR1|=1<<0;          //串口使能
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
yy_yanyu
1楼-- · 2019-07-20 07:13
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 11:12
如果你的库函数已经是可以的了,你其实很好解决。直接仿真到串口初始化函数,然后对比库函数和寄存器,在经过初始化以后,LPUSART1的各个寄存器数据,就知道问题在哪里了

一周热门 更多>