操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    端口復用功能

    STM32 有很多的內(nèi)置外設(比如:串口、ADC、DAC等是獨立的模塊和內(nèi)核連接在一起),這些外設的外部引腳都是與 GPIO 復用的。也就是說,一個 GPIO如果可以復用為內(nèi)置外設的功能引腳,那么當這個 GPIO 作為內(nèi)置外設使用的時候,就叫做復用。

    大家都知道,MCU 都有串口,STM32 有好幾個串口。比如說 有 5 個串口,我們可以查手冊知道,串口 1 的引腳對應的 IO 為 PA9,PA10.PA9stm32復用端口初始化步驟,PA10 默認功能是 GPIO,所以當PA9,PA10 引腳作為串口 1 的 TX,RX 引腳使用的時候,那就是端口復用。查看芯片資料可知道那些口是復用端口。

    復用端口初始化有幾個步驟:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    

    代碼如下:

    //USART1_TX PA.9 復用推挽輸出
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    //USART1_RX PA.10 浮空輸入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    

    我們在使用復用功能的是時候,最少要使能 2 個時鐘:

    端口重映射

    為了使不同器件封裝的外設 IO 功能數(shù)量達到最優(yōu),可以把一些復用功能重新映射到其他一些引腳上。STM32 中有很多內(nèi)置外設的輸入輸出引腳都具有重映射(remap)的功能。我們知道每個內(nèi)置外設都有若干個輸入輸出引腳,一般這些引腳的輸出端口都是固定不變的,為了讓設計工程師可以更好地安排引腳的走向和功能,在 STM32 中引入了外設引腳重映射的概念,即一個外設的引腳除了具有默認的端口外,還可以通過設置重映射寄存器的方式,把這個外設的引腳映射到其它的端口。

    簡單的講就是把管腳的外設功能映射到另一個管腳,但不是可以隨便映射的,具體對應關系《STM32 中文參考手冊 V10》的 P116 頁“8.3 復用功能和調(diào)試配置”有講解。這里我們同樣拿串口 1 為例來講解。

    上圖是截取的中文參考手冊中的重映射表,從表中可以看出,默認情況下,串口 1 復用的時候的引腳位 PA9,PA10,同時我們可以將 TX 和 RX 重新映射到管腳 PB6 和 PB7 上面去。

    所以重映射我們同樣要使能復用功能的時候講解的 2 個時鐘外,還要使能 AFIO 功能時鐘,然后要調(diào)用重映射函數(shù)。詳細步驟為:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    

    PS: 在對寄存器,和進行讀寫操作前,應首先打開AFIO時鐘。

    1、 :配置復用功能映射

    2、 :配置外部中斷線映射

    3、 :配置事件輸出

    GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
    

    這樣就將串口的 TX 和 RX 重映射到管腳 PB6 和 PB7 上面了。至于有哪些功能可以重映射,大家除了查看中文參考手冊之外,還可以從 函數(shù)入手查看第一個入口參數(shù)的取值范圍可以得知。在.h 文件中定義了取值范圍為下面宏定義的標識符,這里我們貼一小部分:

    #define GPIO_Remap_SPI1 ((uint32_t)0x00000001) 
    #define GPIO_Remap_I2C1 ((uint32_t)0x00000002) 
    #define GPIO_Remap_USART1 ((uint32_t)0x00000004) 
    #define GPIO_Remap_USART2 ((uint32_t)0x00000008) 
    #define GPIO_PartialRemap_USART3 ((uint32_t)0x00140010) 
    #define GPIO_FullRemap_USART3 ((uint32_t)0x00140030)
    

    從上面可以看出stm32復用端口初始化步驟, 只有一種重映射,而對于 ,存在部分重映射和完全重映射。所謂部分重映射就是部分管腳和默認的是一樣的,而部分管腳是重新映射到其他管腳。而完全重映射就是所有管腳都重新映射到其他管腳。看看手冊中的 重映射表:

    部分重映射就是 PB10,PB11,PB12 重映射到 PC10,PC11,PC12 上。而 PB13 和 PB14 和沒有重映射情況是一樣的,都是 和 對應管腳。完全重映射就是將這兩個腳重新映射到 PD11 和 PD12 上去。我們要使用 的部分重映射,我們調(diào)用函數(shù)方法為:

    GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);
    

網(wǎng)站首頁   |    關于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有