OpenEdv-开源电子网

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

对于STM32F103寄存器串口UART教程程序的疑问

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-2-8
在线时间
2 小时
发表于 2020-2-8 16:43:30 | 显示全部楼层 |阅读模式
1金钱
void usart3_init(u32 pclk1,u32 bound)
{           
        RCC->APB2ENR|=1<<3;           //使能PORTB口时钟  
        GPIOB->CRH&=0XFFFF00FF;        //IO状态设置
        GPIOB->CRH|=0X00008B00;        //IO状态设置
       
        RCC->APB1ENR|=1<<18;          //使能串口时钟          
        RCC->APB1RSTR|=1<<18;   //复位串口3
        RCC->APB1RSTR&=~(1<<18);//停止复位       
        //波特率设置
        USART3->BRR=(pclk1*1000000)/(bound);// 波特率设置         
        USART3->CR1|=0X200C;          //1位停止,无校验位.
        //使能接收中断
        USART3->CR1|=1<<5;            //接收缓冲区非空中断使能                   
        MY_NVIC_Init(0,1,USART3_IRQn,2);//组2
        TIM7_Int_Init(1000-1,7200-1);        //100ms中断
        TIM7->CR1&=~(1<<0);                //关闭定时器7
        USART3_RX_STA=0;                //清零
}


这是教程的串口3的初始化程序,我个人不理解的是对PB3的配置,在本程序中,最后与8相与,也就是配置成了输入的上拉或者下拉,但是在datasheet中,明确要求了对于串口的输入全双工必须是浮空和上拉输入,在本程序中并没有对对PB3-ODR进行配置1,也就是最后都是下拉输入,所以个人就比较以后,查了教程中所有,都没有对ODR进行1配置,然后我查阅了库函数版本,是设置了浮空输入,那理论上寄存器版本应该是与4相与(0100),也就是程序应该改成:
GPIOB->CRH|=0X00004B00;        //IO状态设置
不知道是我理解的错误,希望有人可以帮我解答

最佳答案

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

两个都OK,在串口模式下,IO设置成推挽输出,或者复用输出,或者上拉/下拉输入,都是可以正常工作的,对于RX脚来说。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-2-8 16:43:31 | 显示全部楼层
两个都OK,在串口模式下,IO设置成推挽输出,或者复用输出,或者上拉/下拉输入,都是可以正常工作的,对于RX脚来说。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-7-26
在线时间
3 小时
发表于 2020-2-14 20:09:13 | 显示全部楼层
重映射怎么写?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-7-26
在线时间
3 小时
发表于 2020-2-14 20:09:49 | 显示全部楼层
重映射怎么写?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-2-8
在线时间
2 小时
 楼主| 发表于 2020-2-16 17:20:45 | 显示全部楼层
受教了,感谢原子哥
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2020-2-8
在线时间
2 小时
 楼主| 发表于 2020-2-16 17:21:13 | 显示全部楼层
正点原子 发表于 2020-2-8 16:43
两个都OK,在串口模式下,IO设置成推挽输出,或者复用输出,或者上拉/下拉输入,都是可以正常工作的,对于R ...

感谢原子哥解答
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 18:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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