STM32串口的部分映射与完全映射

来源:互联网 发布:asp.net mvc cms 编辑:程序博客网 时间:2024/06/05 04:21

觉得不错分享给大家,学习!

转载地址:http://www.eeworld.com.cn/mcu/article_2017091234363.html


以stm32的USART1来举例


默认使用的是PA9为TX,PA10为RX,当需要开启复用功能时,需要注意修改以下几个地方的代码

      1 时钟的开启


     当使用复用功能后,就需要开启复用时钟RCC_APB2Periph_AFIO


 2 初始化引脚的不同,原来的是PA9,PA10,但是现在要初始化PB6,PB7,这一部分就不贴代码了。

 3 调用GPIO_PinRemapConfig()函数

      


  1. GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);  

    USART1的重映射开启




注意:GPIO_PinRemapConfig()函数的参数是不能随便写的,在《stm32固件库使用手册》里面给出了可用参数的列表

GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE); //USART3的复用功能完全重映射

       GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE); //USART3的部分重映射

部分重映射和完全重映射有什么区别那?在网上我也没找到确定的答案,但是建议开启完全重映射,因为网上有资料说部分重映射在发送消息时候不正常(我自己没有做实验)

还需要注意,在开启重映射功能之前一定要先查看一下自己的单片机是否支持重映射功能。


附:初始化串口的程序


  1. void USART1_Config(void)  

  2. {  

  3.         GPIO_InitTypeDef GPIO_InitStructure;  

  4.         USART_InitTypeDef USART_InitStructure;  

  5.           

  6.         /* config USART1 clock */  

  7.       

  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);  

  9.           

  10.         /* USART1 GPIO config */  

  11.           

  12.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  

  13.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  

  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

  15.         GPIO_Init(GPIOB, &GPIO_InitStructure);  

  16.       

  17.           

  18.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;  

  19.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  

  20.         GPIO_Init(GPIOB, &GPIO_InitStructure);  

  21.           

  22.       

  23.             GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);  

  24.         //GPIO_AFIODeInit();  

  25.         /* USART1 mode config */  

  26.         USART_InitStructure.USART_BaudRate = 115200;  

  27.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;  

  28.         USART_InitStructure.USART_StopBits = USART_StopBits_1;  

  29.         USART_InitStructure.USART_Parity = USART_Parity_No ;  

  30.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  

  31.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  

  32.         USART_Init(USART1, &USART_InitStructure);   

  33.         USART_Cmd(USART1, ENABLE);  

  34. }  

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 故作镇定 故作深沉 故剑情深 故剑 故剑陈灯 深情故剑 故剑之求 故剑 陈灯 万剑帝君 故剑 类似故剑的养成文 上乃召求微时故剑 故垒西边 衡水故城 故城 故城县 故城吧 高昌故城 明故城旅游 明故城 汉魏故城 南顿故城 故城旧事 故城县医院 故城草木深 郑韩故城 故城县打一回炮多少钱 汉魏故城旅游 高昌故城旅游 桃城区 破故子的功效与作用 破故子 子是故人来 故子 故宫雪糕 故宫图片 故宫导游词 故宫旅游 故宫博物 沈阳故宫 北京故宫 故宫平面图