OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3122|回复: 2

求助! H743串口2寄存器参考串口1配置,无法通信

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-6-11
在线时间
1 小时
发表于 2019-6-11 20:52:48 | 显示全部楼层 |阅读模式
1金钱
H743开发板,参考寄存器版例程,将串口2模仿串口1进行配置,只修改了端口和外设时钟至APB1LENR,pclk2和pclk1均为100M,看了下其他部分并无差别,为什么无法通信呢?

#if EN_USART2_RX   
u8 USART2_RX_BUF[USART_REC_LEN];     
u16 USART2_RX_STA=0;

void USART2_IRQHandler(void)//中断服务程序
{
        u8 res;       
#if SYSTEM_SUPPORT_OS                
        OSIntEnter();   
#endif
        if(USART2->ISR&(1<<5))
        {         
                res=USART2->RDR;
                if((USART2_RX_STA&0x8000)==0)
                {
                        if(USART2_RX_STA&0x4000)
                        {
                                if(res!=0x0a)USART2_RX_STA=0;
                                else USART2_RX_STA|=0x8000;
                        }else
                        {       
                                if(res==0x0d)USART2_RX_STA|=0x4000;
                                else
                                {
                                        USART2_RX_BUF[USART_RX_STA&0X3FFF]=res;
                                        USART2_RX_STA++;
                                        if(USART2_RX_STA>(USART_REC_LEN-1))USART2_RX_STA=0;
                                }                 
                        }
                }                                                                                                
        }
        USART2->ICR|=1<<3;
#if SYSTEM_SUPPORT_OS
        OSIntExit();                                                                                           
#endif
}
#endif       


void uart2_init(u32 pclk1,u32 bound)
{           
        u32        temp;          
        temp=(pclk1*1000000+bound/2)/bound;       
        RCC->AHB4ENR|=1<<0;                  
        RCC->APB1LENR|=1<<17;            
       
       
        GPIO_Set(GPIOA,PIN2|PIN3,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);
        GPIO_AF_Set(GPIOA,2,7);        //PA2,AF7
        GPIO_AF_Set(GPIOA,3,7);   //PA3,AF7            
       
        USART2->BRR=temp;                
        USART2->CR1=0;                        
        USART2->CR1|=0<<28;                
        USART2->CR1|=0<<12;                
        USART2->CR1|=0<<15;        
        USART2->CR1|=1<<3;         
#if EN_USART2_RX                         
       
        USART2->CR1|=1<<2;         
        USART2->CR1|=1<<5;   
        MY_NVIC_Init(3,3,USART2_IRQn,2);
#endif
        USART2->CR1|=1<<0;
}


最佳答案

查看完整内容[请看2#楼]

参考我们的485例程,用的串口2
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-6-11 20:52:49 | 显示全部楼层
参考我们的485例程,用的串口2
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-6-11
在线时间
1 小时
 楼主| 发表于 2019-6-12 09:58:03 | 显示全部楼层
正点原子 发表于 2019-6-11 20:52
参考我们的485例程,用的串口2

谢谢你,搞定了。
USART2_RX_BUF[USART_RX_STA&0X3FFF]=res;//这里也少写一个2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-8 22:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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