• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記之串口重映射

    STM32學習筆記之串口重映射

    作者: 時間:2016-11-24 來源:網絡 收藏

    在進行原理圖設計的時候發現管腳的分配之間有沖突,需要對管腳進行重映射,在手冊中了解到STM32上有很多I/O口,也有很多的內置外設像:I2C,ADC,ISP,USART等,為了節省引出管腳,這些內置外設基本上是與I/O口共用管腳的,也就是I/O管腳的復用功能。但是STM32還有一特別之處就是:很多復用內置的外設的I/O引腳可以通過重映射功能,從不同的I/O管腳引出,即復用功能的引腳是可通過程序改變的。

    本文引用地址:http://www.czjhyjcfj.com/article/201611/320739.htm

    第一次這么干感覺心里沒底,所以針對USART1在STM32F103RBT6的板子上實現了一把,以下是相關的測試代碼:

    void Uart1_Init(void)

    {

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);//開啟端口B和復用功能時鐘

    GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);//使能端口重映射

    GPIO_InitTypeDef GPIO_InitStructure;

    //uart 的GPIO重映射管腳初始化 PB6 usart1_TX PB7 USART_RX

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//推挽輸出

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOB,&GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//懸空輸入

    GPIO_Init(GPIOB,&GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

    USART_InitTypeDef USART_InitStructure;

    //串口參數配置:9600,8,1,無奇偶校驗,無硬流量控制 ,使能發送和接收

    USART_InitStructure.USART_BaudRate = 9600;

    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;

    USART_Init(USART1, &USART_InitStructure);

    USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);//串口接收中斷

    USART_Cmd(USART1, ENABLE);

    }

    簡要分析重映射步驟為:

    1.打開重映射時鐘和USART重映射后的I/O口引腳時鐘,

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RC C_APB2Periph_AFIO,ENABLE);

    2.I/O口重映射開啟.

    GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

    3.配制重映射引腳, 這里只需配置重映射后的I/O,原來的不需要去配置.

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

    只需要簡單的以上三步就能輕松搞定,完整的例程見附件內容。

    例程中實現了重映射之后的串口收發功能。



    評論


    技術專區

    關閉
    主站蜘蛛池模板: 遵义市| 呼玛县| 新乡县| 南陵县| 彰化市| 西乌珠穆沁旗| 博客| 宝清县| 安吉县| 上饶县| 东台市| 凤庆县| 岳西县| 金塔县| 普陀区| 青铜峡市| 南宁市| 泰顺县| 衡南县| 蕲春县| 湘西| 金昌市| 德清县| 安平县| 大名县| 讷河市| 托里县| 手机| 澄江县| 读书| 磐石市| 阜新| 杭州市| 台江县| 东辽县| 富裕县| 民乐县| 晋城| 乌兰察布市| 安徽省| 大石桥市|