crh寄存器_牛人的STM32学习笔记(寄存器版本).doc
牛人的STM32學習筆記(寄存器版本)
一、GPIO口的配置
STM32的DGPIO口最多可以有7組(GPIOa~GPIOg),而每一組GPIO口均有16個雙向IO組成。并且沒個IO口均可配置成8種模式(4種輸入模式,4種輸出模式)。不管配置哪個IO口也不論將其配置成哪種模式(但是配置成哪種模式要看具體應用,參考《中文參考手冊》第105頁)都可以按以下步驟來進行配置:
使能PORTx(x=A~G)時鐘
這里就得操作寄存器RCC_APB2ENR(32為寄存器)了
15141312111098ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENIOPGEN76543210IOPFENIOPEENIOPDENIOPCENIOPBENIOPAEN保留AFIOEN3130292827262524CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]2322212019181716CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]15141312111098CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]76543210CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]
GPIOx_CRL(x=A~G(端口配置低寄存器x=A…E)
該寄存器用于配置GPIOx的低8位,具體8種模式的配置見《中文參考手冊》例如: GPIOD->CRL&=0XFFFFF0FF;GPIOD->CRL|=0/PD.2推挽輸出;其余IO口的低8位以此類推。
3130292827262524CNF15[1:0]MODE15[1:0]CNF14[1:0]MODE14[1:0]2322212019181716CNF13[1:0]MODE13[1:0]CNF12[1:0]MODE12[1:0]15141312111098CNF11[1:0]MODE11[1:0]CNF10[1:0]MODE10[1:0]76543210CNF9[1:0]MODE9[1:0]CNF8[1:0]MODE8[1:0]
GPIOx_CRH(端口配置高寄存器x=A…E)
該寄存器用于配置GPIOx的高8位,具體8種模式的配置見《中文參考手冊》例如:
GPIOA->CRH&=0XFFFFFFF0;;GPIOA->CRH|=0//PA8 推挽輸出;其余IO口的高8位以此類推。
端口的輸入和輸出電平配置
15141312111098IDR15IDR14IDR13IDR12IDR11IDR10IDR9IDR876543210IDR7IDR6IDR5IDR4IDR3IDR2IDR1IDR0
GPIOx_IDR(端口輸入數據寄存器x=A…E)
該寄存器配置IO口的0~15位的輸入數據,以16位讀出。
15141312111098ODR15ODR14ODR13ODR12ODR11ODR10ODR9ODR876543210ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR0
GPIOx_ODR(端口輸出數據寄存器x=A…E)
該寄存器配置IO口的0~15位的輸入初始狀態,例如:GPIOA->ODR|=1<<13;//PA13上拉輸入
一般GPIO口配置可仿以下兩個程序:
void KEY_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA時鐘
GPIOA->CRL&=0XFFFFFFF0;//PA0設置成輸入
GPIOA->CRL|=0
GPIOA->CRH&=0X0F0FFFFF;//PA13,15設置成輸入
GPIOA->CRH|=0
GPIOA->ODR|=1<<13; /
總結
以上是生活随笔為你收集整理的crh寄存器_牛人的STM32学习笔记(寄存器版本).doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ITS测试
- 下一篇: 程序猿的困惑:这一切都是技术惹的祸?