CRL,GPIOx->CRH 兩個32位的數(shù)據(jù)寄存器 GPIOx->IDR,GPIOx->ODR 一個32位的 set/reset 寄存器 GPIOx->BSRR 一位16位的 reset 寄存器 GPIOx->BRR 一位32位的鎖定寄存器 GPIOx->LCKR。" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于stm32的GPIO寄存器學習解析

MCU開發(fā)加油站 ? 2018-01-11 09:03 ? 次閱讀

GPIO即通用輸入/輸出 (General Purpose Input Output)

包括:

兩個32位的配置寄存器 GPIOx->CRL,GPIOx->CRH

兩個32位的數(shù)據(jù)寄存器 GPIOx->IDR,GPIOx->ODR

一個32位的 set/reset 寄存器 GPIOx->BSRR

一位16位的 reset 寄存器 GPIOx->BRR

一位32位的鎖定寄存器 GPIOx->LCKR

端口的模式包括:

浮空輸入(Input floating)—— 即沒有上拉電阻和下拉電阻,電壓呈不確定性,一般用來做ADC輸入用,這樣可以減少上下拉電阻對結果的影響

基于stm32的GPIO寄存器學習解析

上拉輸入(Input pull-up)

下拉輸入(Input-pull-down)

模擬輸入(Analog

開漏輸出(Output open-drain)—— 輸出邏輯0,則N-MOS激活; 輸出邏輯1,端口處于高阻(電阻非常大,但不是斷路,此外,P-MOS從未激活)

推挽輸出(Output push-pull)—— 輸出邏輯0,則N-MOS激活;輸出邏輯1,P-MOS激活

復用功能推挽輸出(Alternate function push-pull)——片內(nèi)外設功能(I2C的SCL,SDA)

復用功能開漏輸出(Alternate function open-drain)——片內(nèi)外設功能(USART的TX1,SPI的MOSI,MISO,SCK,SS)

復用開漏輸出、復用推挽輸出:可以理解為GPIO口被用作第二功能時的配置情況(即并非作為通用IO口使用)

注意:I / O端口寄存器被訪問為32位字(半字或字節(jié)存取是不允許的)

其余具體的可以查看stm3210x 手冊

GPIOx->CRL 低位(0-7)端口配置寄存器(x = A~ G,該寄存器偏移地址為:0x00):

GPIOx->CRH 高位(8-15)端口配置寄存器(x = A~ G,該寄存器偏移地址為:0x04):

GPIOx->IDR 端口數(shù)據(jù)輸入寄存器(x = A~ G,該寄存器偏移地址為:0x08):只讀,可以讀取IO口輸入的值

GPIOx->ODR 端口數(shù)據(jù)輸出寄存器(x = A~ G,該寄存器偏移地址為:0x0C):可寫可讀,可以設置IO口輸出的值

GPIOx->BSRR 低位端口配置寄存器(x = A~ G,該寄存器偏移地址為:0x10):0-15位——為1時,可以使ODRx相應的位置1,為0時,無變化 。15-31位——為1時,可以使ODRx相應的位清零,為0時,無變化(注:當set和reset都設置了,則set優(yōu)先級高)

GPIOx->BSR 低位端口配置寄存器(x = A~ G,該寄存器偏移地址為:0x14): 0-15位——為1時,可以使ODRx相應的位清零,為0時,無變化

注:用BSRR和BRR去改變管腳狀態(tài)的時候,沒有被中斷打斷的風險,也就不需要關閉中斷

GPIOx->LCKR 端口配置鎖定寄存器(x = A~ G,該寄存器偏移地址為:0x18):用來鎖定對應位的端口位配置,當端口被鎖定時,不再有可能修改它的值,直到系統(tǒng)復位。每一個鎖都凍結相應的4位控制寄存器(CRL,CRH)

例子:

/*根據(jù)高8位的輸入電平來決定低8位的輸出電平*/

GPIOA->CRL = 0x33333333; //GPIOA.0-GPIO0.7 output push-pull 50MHzGPIOA->CRH = 0x44444444; //GPIOA.8-GPIOA.15 input floating

while(1){if(GPIOA->IDR & 0xff00)GPIOA->ODR = (GPIOA->IDR >> 8) & 0xff;elseGPIOA->ODR = 0;}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5294

    瀏覽量

    119814
  • STM32
    +關注

    關注

    2264

    文章

    10854

    瀏覽量

    354288
  • GPIO
    +關注

    關注

    16

    文章

    1188

    瀏覽量

    51832

原文標題:stm32之GPIO寄存器學習

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CSD寄存器解析

    CSD寄存器解析,SD卡寄存器解說,值得學習
    發(fā)表于 01-06 14:25 ?0次下載

    STM32 GPIO寄存器ODR BSRR BRR

    STM32 GPIO寄存器ODR BSRR BRR詳細介紹
    發(fā)表于 07-29 10:27 ?2次下載

    STM32 BSRR BRR ODR寄存器詳情解析

    BSRR 和 BRR 都是 STM32 系列 MCU 中 GPIO寄存器。 BSRR 稱為端口位設置/清楚寄存器,BRR稱為端口位**寄存器
    發(fā)表于 11-13 09:54 ?1.2w次閱讀

    STM32使用BSRR和BRR寄存器快速操作GPIO端口

    STM32的每個GPIO端口都有兩個特別的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通過這兩個寄存器可以直接對對應的GPIOx
    發(fā)表于 11-26 11:50 ?1次下載

    STM32F4寄存器與IO輸入輸出學習

    IO設置函數(shù)包括兩個函數(shù):GPIO_Set和GPIO_AF_Set. GPIO_AF_Set,每次只能設置一個IO口的復用功能。STM32F4的每組通用I/O端口包括4個32位配置
    發(fā)表于 11-29 14:21 ?10次下載
    <b class='flag-5'>STM32</b>F4<b class='flag-5'>寄存器</b>與IO輸入輸出<b class='flag-5'>學習</b>

    STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化

    文章目錄一、STM32F103系列芯片的地址映射和寄存器映射原理1.寄存器2.地址映射和寄存器映射原理二、GPIO端口的初始化1.
    發(fā)表于 12-05 14:21 ?10次下載
    <b class='flag-5'>STM32</b>F103系列芯片的地址映射和<b class='flag-5'>寄存器</b>映射原理,<b class='flag-5'>GPIO</b>端口的初始化

    GPIO寄存器

    ,一般高16位保留BSRR寄存器32位分為低16位BSRRL和高16位BSRRH,BSRRL配置一組IO口的16個IO口的狀態(tài)(1),BSRRH配置復位狀態(tài)(0)。每組GPIO端口的寄存器包括:4個32位配置
    發(fā)表于 12-08 17:06 ?5次下載
    <b class='flag-5'>GPIO</b><b class='flag-5'>寄存器</b>

    STM32寄存器點燈

    配置寄存器使STM32最小系統(tǒng)板上的LED燈點亮根據(jù)原理圖,要使D2點亮,需要將PC13拉低,分為以下步驟:使能GPIO的時鐘配置GPIO13為輸出模式配置
    發(fā)表于 12-08 17:21 ?3次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>寄存器</b>點燈

    STM32學習筆記(2)——寄存器

    STM32 第二天寄存器寄存器功能:寄存器的功能是存儲二進制代碼,它是由具有存儲功能的觸發(fā)組合起來構成的。一個觸發(fā)
    發(fā)表于 12-08 17:36 ?18次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學習</b>筆記(2)——<b class='flag-5'>寄存器</b>

    stm32是如何將寄存器值通過標準庫寫入寄存器的?

    GPIO_Init函數(shù)3.總結0. 前言在平時的學習和工作中,可能很少有人會實際去操作寄存器,但是去了解庫函數(shù)是如何去操作寄存器是很有必要的。不僅可以加深對
    發(fā)表于 12-16 16:58 ?18次下載
    <b class='flag-5'>stm32</b>是如何將<b class='flag-5'>寄存器</b>值通過標準庫寫入<b class='flag-5'>寄存器</b>的?

    STM32-GPIO_寄存器版(1)

    本文基于STM32F407ZGT6,適用于M3/M4大部分內(nèi)核的STM32芯片?!?b class='flag-5'>STM32每個通用 I/O 端口包括 10個32位
    發(fā)表于 12-28 19:26 ?0次下載
    <b class='flag-5'>STM32-GPIO</b>_<b class='flag-5'>寄存器</b>版(1)

    STM32 GPIO學習

    GPIO函數(shù)一(IDR 是一個端口輸入數(shù)據(jù)寄存器,只用了低 16 位。該寄存器為只讀寄存器,并且只能以16 位的形式讀出)uint8_t GPIO
    發(fā)表于 01-12 18:24 ?3次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b><b class='flag-5'>學習</b>

    配置STM32寄存器控制GPIO點亮LED

    STM32點亮LED 寄存器方式IO簡介1、每個IO可以自由編程,但是IO口寄存器必須按照32位字被訪問。2、每個IO端口都有7個寄存器來控制。CRL 【0-7】端口配置
    發(fā)表于 01-13 16:15 ?3次下載
    配置<b class='flag-5'>STM32</b><b class='flag-5'>寄存器</b>控制<b class='flag-5'>GPIO</b>點亮LED

    STM32F103寄存器配置相關學習 —— GPIO

    1. GPIO相關寄存器1.1 配置寄存器(CRL、CRH)1.2 數(shù)據(jù)寄存器(IDR、ODR)1.3 位設置/清除寄存器(BSRR)1.4
    發(fā)表于 01-17 09:33 ?2次下載
    <b class='flag-5'>STM32</b>F103<b class='flag-5'>寄存器</b>配置相關<b class='flag-5'>學習</b> —— <b class='flag-5'>GPIO</b>

    STM32GPIO的相關配置寄存器、庫函數(shù)、位操作

    STM32的每組GPIO口包括7個寄存器。也就是說,每個寄存器可以控制一組GPIO的16個GPIO
    發(fā)表于 02-10 10:24 ?5次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>GPIO</b>的相關配置<b class='flag-5'>寄存器</b>、庫函數(shù)、位操作