新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32 通用IO讀寫

        STM32 通用IO讀寫

        作者: 時間:2018-07-24 來源:網絡 收藏

        是基于ARM Cortex-M3內核的芯片,專為要求高性能、低成本、低功耗的嵌入式應用設計的芯片。1μs的雙12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻轉速度。
        我學的是F103。它的內核為:ARM 32位的Cortex -M3 CPU,它的工作頻率最高可以達到72MHZ。2個12位AD(16路通道),80個通用I/O接口,7個定時器,9個通信接口。
        (一)通用I/O接口
        主要要達到的目的是:1、了解通用I/O接口的接口和性能。2、了解復用功能和重映射。3、掌握通用I/O接口的程序設計方法。
        1.1.1通用I/O(GPIO)接口的結構:
        一個GPIO引腳包含以下幾個寄存器:①兩個32位的配置寄存器(GPIOx_CRL,GPIOx_CRH),②兩個32位的數據寄存器(GPIOx_IDR,GPIOx_ODR),③一個16位的復位寄存器(GPIOx_BRR),④一個32位的置位/復位寄存器(GPIOx_BSRR),⑤一個32位的鎖定寄存器(GPIOx_LCKR)。所有寄存器不允許按照半字節或字節訪問,必須按32位字訪問。
        1.1.2每一個GPIO引腳都可以在程序中配置成如下幾種模式:輸入懸空,輸入上拉,輸入下拉,模擬輸入,開漏輸出,推挽式輸出,,推挽式復用功能,開漏復用功能。
        這些模式通過CNF[1:0]和MODE[1:0]來完成配置
        1.2.1通用I/O(GPIO)接口的功能
        GPIO有四種功能:1通用的I/O接口。2單獨的為設置或者位刪除。3外中斷/喚醒線、4復用功能(AF)和重映射、5GPIO的功能鎖定
        1.2.11通用I/O:在復位期間和剛復位之后,復位功能未開啟,I/O口被配置成浮空輸入模式(CNFx[1:0]=01b,MODE[1:0]=00b)
        1.2.12單獨的位設置和位清除:當對GPIOx_ODR的個別位進行設置時,在單次APB2寫操作里,可以改變一個或多個位。這是通過對GPIOx_BSRR和GPIOx_BRR來實現的。想改變某一位可以單獨對這位寫1,寫0則此位不被更改。
        1.2.13外部中斷:當使用外部中斷線時,相應引腳必須配置成“輸入模式”。
        1.2.14復用功能(AF)和重映射:
        復用輸入:端口可以配置成輸入模式和輸出模式
        復用輸出:端口必須配置成復用功能輸出模式(推挽或開漏),這樣使引腳和輸出寄存器斷開,并和片上外設的輸出信號連接。
        雙向復用功能:端口必須配置成復用模式功能輸出模式(推挽和開漏)
        1.2.15GPIO的鎖定機制:為了防止I/O配置被更改,可以單獨對某個位進行鎖定使其在下一次復位之前不可以在被更改。
        1.2.2GPIO的功能配置
        1.2.21輸入配置
        1.2.22輸出配置
        1.2.23復用功能配置
        1.2.24模擬輸入配置
        1.2.3復用功能與重映射
        ①OSC_IN和OSC_OUT引腳通過AFIO_MAPR來實現對他們的重映射。
        ②BXCAN可以被映射到端A、B、D上,由CAN_REMAP[1:0]來設置
        ③調試接口信號的映射
        ④定時器的重映射分別由TIM1_REMAP[1:0],TIM2_REMAP[1:0],TIM3_REMAP[1:0],TIM4_REMAP[1:0]來設置
        ⑤USART1的重映射由寄存器USART1_REMAP[1:0];來設置=0為PA9和PA10,=1為PB6和PB7。
        USART2的重映射寄存器為USART2_REMAP[1:0].
        USART3的重映射寄存器為USART3_REMAP[1:0]
        ⑥I2C的重映射寄存器為I2C_REMAP=0為PB6和PB7,=1為PB8和PB9,
        ⑦SPI1的重映射寄存器為SPI1_REMAP=0為PA4,PA5,PA6,PA7.SPI1_REMAP=1為PA15,PB3,PB4,PB5
        2.1.1通用I/O接口的編程方法
        ST公司已經提供了比較完善的通用I/O的接口庫,其位于“stm32f10x_gpio.c”中對應的頭文件為“stm32f10x_gpio.h”
        GPIO_DeInit函數:GPIO寄存器復位為默認值
        GPIO_AFIODeInit函數:復用功能寄存器復位為默認值
        GPIO_Init函數:用于按照指定參數初始化GPIO部件
        GPIO_StructInit函數:用于為GPIO_InitStruct各個成員賦默認值
        GPIO_ReadInputDataBit函數:用以讀取特定輸入端口引腳
        GPIO_ReadInputData函數:用于讀取特定GPIO輸入端口引腳
        GPIO_ReadOutputDataBit函數:用于讀取特定輸出數據端口位
        GPIO_ReadOutputData函數:用于讀取特定GPIO輸出數據端口
        GPIO_SetBits函數:用于置位選定的數據端口位
        GPIO_ResetBits函數:用于清除選定的數據端口位
        GPIO_WriteBit函數:
        GPIO_Write函數:用于寫數據到特定的端口
        GPIO_PinLockConfig函數:用于鎖定GPIO引腳配置寄存器
        GPIO_EventOutputConfig函數:用于選擇GPIO引腳用作事件輸出
        GPIO_EventOutputCmd函數:GPIO使能(禁用)STM32事件輸出
        GPIO_PinRemapConfig函數:用于改變特定引腳的映射
        GPIO_EXTILineCongig函數:用于選擇GPIO引腳作為EXTI線
        GPIO寄存器結構
        typedef struct
        {
        vu32 CRL;
        vu32 CRH;
        vu32 IDR;
        vu32 ODR;
        vu32 BSRR;
        vu32 BRR;
        vu32 LCKR;
        }GPIO_TypeDef;
        復用功能寄存器結構:
        typedef struct
        {
        vu32 EVCR;
        vu32 MAPR;
        vu32 EXTICR[4];
        }AFIO_TypeDef;

        本文引用地址:http://www.104case.com/article/201807/383677.htm
        • STM32單片機中文官網
        • STM32單片機官方開發工具
        • STM32單片機參考設計


        關鍵詞: STM32 通用IO讀寫

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黑水县| 修武县| 进贤县| 安龙县| 贵阳市| 西乌珠穆沁旗| 武胜县| 蛟河市| 中江县| 潢川县| 黄平县| 那曲县| 泗洪县| 丹棱县| 康定县| 荔波县| 永德县| 台江县| 全州县| 汕尾市| 四川省| 筠连县| 新郑市| 桦川县| 霍林郭勒市| 阜平县| 九寨沟县| 西华县| 皮山县| 株洲县| 彩票| 沙坪坝区| 政和县| 余庆县| 太原市| 武夷山市| 汉源县| 芒康县| 唐山市| 虎林市| 桐乡市|