OpenEdv-开源电子网

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

关于usart1的寄存器地址计算

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-5-29
在线时间
0 小时
发表于 2018-5-29 23:29:42 | 显示全部楼层 |阅读模式
1金钱
我的板子是战舰STM32F10X。
在例程中,对于usart1的配置是用的PA9,PA10,而且已知底层代码如下:
第一个问题是USART1的寄存器地址是如何算出的?(这里可能说明的不很具体,请看下文分解)
还有个问题就是比如说我要用PA0,PA1代替PA9,PA10的话可不可以呢?
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define PERIPH_BASE           ((uint32_t)0x40000000)
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_AF_PP = 0x18
#define USART1              ((USART_TypeDef *) USART1_BASE)
#define USART1_BASE           (APB2PERIPH_BASE + 0x3800)//问题在这里:这个0x3800是怎么根据PA9和PA10以及其相关的寄存器地址算出来的??有没有计算公式??
void uart_init(u32 bound){
  //GPIO端口设置
  GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
  
  //USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
  
  //USART1_RX   GPIOA.10初始化
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
(其中这个是有关USART1的TX,RX配置)



最佳答案

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

1,串口1只是和PA9\PA10引脚复用,内部寄存器没有关联; 2,所有特殊寄存器地址全部厂家定义好的,查看相关数据手册即可得到。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2018-5-14
在线时间
69 小时
发表于 2018-5-29 23:29:43 | 显示全部楼层
1,串口1只是和PA9\PA10引脚复用,内部寄存器没有关联;
2,所有特殊寄存器地址全部厂家定义好的,查看相关数据手册即可得到。
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-5-30 08:46:35 | 显示全部楼层
地址在参考手册里有说明的。串口的引脚是固定死的,在芯片手册里有说明,可以用另2个引脚复用,记得不是pa0 pa1
我有故事,你有酒吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 20:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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