OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 136|回复: 3

USART3重映射问题

[复制链接]

  离线 

27

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2016-6-16
在线时间
43 小时
发表于 2018-1-12 17:20:03 | 显示全部楼层 |阅读模式
1金钱
STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,即一个外设的引脚除了具有默认的脚位外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的脚位,拿USART3来说,STM32
手册中介绍到UART的重映射可分为三中,通过对寄存器的设置可以实现:
00:没有重映像(CH1/PA6,CH2/PA7,CH3/PB0,CH4/PB1);  
01:未用组合;
10:部分映像(CH1/PB4,CH2/PB5,CH3/PB0,CH4/PB1);  
11:完全映像(CH1/PC6,CH2/PC7,CH3/PC8,CH4/PC9)

那么现在有个疑问?设置了重映射USART3是不是对所有的管脚(RX、TX、CK、CTS、RTS)都同时生效呢?如果想只应用UXART3的TX和RX重映射,而把USART的CK、CTS、RTS当作普通的IO来使用,请问可以实现吗?应该如何设置呢?多谢各位的不吝赐教啊。

最佳答案

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

重映射是全部生效的,不过你可以设置IO为GPIO功能,就不会影响使用,当正常IO用,也是OK的。
回复

使用道具 举报

  离线 

485

主题

9万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
120540
金钱
120540
注册时间
2010-12-1
在线时间
965 小时
发表于 2018-1-12 17:20:04 | 显示全部楼层
重映射是全部生效的,不过你可以设置IO为GPIO功能,就不会影响使用,当正常IO用,也是OK的。
回复

使用道具 举报

  离线 

0

主题

38

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3180
金钱
3180
注册时间
2015-1-15
在线时间
523 小时
发表于 2018-1-12 17:55:03 | 显示全部楼层
当日可以
回复

使用道具 举报

  离线 

4

主题

96

帖子

0

精华

高级会员

Rank: 4

积分
692
金钱
692
注册时间
2016-11-30
在线时间
133 小时
发表于 2018-1-12 22:43:02 | 显示全部楼层
[C] 纯文本查看 复制代码
void usart3_init(u32 bound)
{  

	NVIC_InitTypeDef NVIC_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOC, ENABLE); // GPIOB时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //串口3时钟使能
	GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE); 

 	USART_DeInit(USART3);                           //复位串口3
		 //USART3_TX   PB10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;      //PB10
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
    GPIO_Init(GPIOC, &GPIO_InitStructure);          //初始化PB10
   
    //USART3_RX	  PB11
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;           //浮空输入
    GPIO_Init(GPIOC, &GPIO_InitStructure);                          //初始化PB11
	
	USART_InitStructure.USART_BaudRate = bound;                     //波特率一般设置为9600;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;     //字长为8位数据格式
	USART_InitStructure.USART_StopBits = USART_StopBits_1;          //一个停止位
	USART_InitStructure.USART_Parity = USART_Parity_No;             //无奇偶校验位
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式
  
	USART_Init(USART3, &USART_InitStructure); //初始化串口3
  

	USART_Cmd(USART3, ENABLE);                  //使能串口 
	
	//使能接收中断
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启中断   
	
	//设置中断优先级
	NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;//抢占优先级3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;		//子优先级3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
}

部分重映射的配置如上,
回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-22 14:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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