STM32F107VCT6学习中,重映射这卡住了...

2019-03-23 19:59发布

大侠们,求重映射的详解和范例啊,小弟拿个开发板学到这卡住了... 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
daicheng
1楼-- · 2019-03-24 03:35
 精彩回答 2  元偷偷看……
霜天
2楼-- · 2019-03-24 05:15
我看着板子上USART3接口用的是485通信,三个引脚分别是PD8,PD9,PD7.这样的情况我不懂,对于第三个引脚是不是也要设置的,那样的话程序还要加点什么?纯粹新手...请见谅!
daicheng
3楼-- · 2019-03-24 09:18
咱们就以串口3为例子吧:
GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE);  使能串口3映射
#define GPIO_PartialRemap_USART3   ((u32)0x00140010)   部分映射
#define GPIO_FullRemap_USART3      ((u32)0x00140030)    全部映射
看下面的图:
1.jpg
2.jpg
如果说的不好可以在讨论一下
霜天
4楼-- · 2019-03-24 13:13
 精彩回答 2  元偷偷看……
yueni_zhao
5楼-- · 2019-03-24 15:15
void USART3_Configuration(uint32_t UART_baud) //波特率,如115200
{   
        USART_InitTypeDef USART_InitStructure;
         GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE);
        /* USARTx configured as follow:
              - BaudRate = 115200 baud  
              - Word Length = 8 Bits
              - One Stop Bit
              - No parity
              - Hardware flow control disabled (RTS and CTS signals)
              - Receive and transmit enabled
        */
        USART_InitStructure.USART_BaudRate = UART_baud;//115200;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        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;       
        USART3_COMInit(&USART_InitStructure);       
}

void USART3_COMInit(USART_InitTypeDef* USART_InitStruct)
{
                GPIO_InitTypeDef GPIO_InitStructure;
               
                /* Enable GPIO clock */
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD| RCC_APB2Periph_AFIO, ENABLE);         //使能串口所有GPIO模块时钟,并使能AFIO模块时钟
               
                /* Enable UART clock */               
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);         //使能串口模块时钟
               
                /* Configure USART Tx as alternate function push-pull */
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                //设置TX引脚
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         //复用推挽输出
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_Init(GPIOD, &GPIO_InitStructure);
               
                /* Configure USART Rx as input floating */
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                //设置RX引脚
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                //浮空输入
                GPIO_Init(GPIOD, &GPIO_InitStructure);
                       
                /* USART configuration */
                USART_Init(USART3, USART_InitStruct);                //初始化USART
               
                /* Enable USART */
                USART_Cmd(USART3, ENABLE);                //使能串口模块
}

波特率119200以上就会出现乱码,牛人说可能是我的485线太长了,9600一下没问题
yueni_zhao
6楼-- · 2019-03-24 16:24
补充下,这个用的是PD和PD9

一周热门 更多>