STM32中如何使用底层的地址来控制IO口的电平

步骤一:使能时钟
首先在数据手册中找到寄存器映像,找到复位和时钟控制(RCC)的初始地址为0x40021000,由于GPIOB是挂在APB2总线上,找到APB2外设时钟使能寄存器(RCC-APB2ENR),偏移地址为0x18,所以RCC-APB2ENR具体地址为0x40021018,其中IOPBEN,端口B的时钟使能是在位3,置一开启,所以*(unsigned int*)0x40021018 |= ((1)<<(3))为开启GPIOB的时钟。(unsigned int*)0x40021018是把0x40021018强制转换成指针类型,指针是专门用来存放地址的,(unsigned int)0x40021018意思是(unsigned int*)0x40021018该地址上存放的变量,(unsigned int)0x40021018 |= ((1)<<(3))的意思是将这个地址上的变量的第三位置一,其余位不变。

步骤二:配置I/O输出模式,即输入还是输出
首先在寄存器映像找到GPIO端口B,初始地址为0x40010c00,然后在找到GPIOB下的CRL寄存器,其偏移为0x00,如何使配置为推完输出(0001),则*(unsigned int*)0x40010C00 |= (1<<(4*5))是将PB5设置为推完输出模式。

步骤三:控制I/O输出高低电平
这个是由GPIOB下的ODR寄存器控制的,ODR寄存器偏移量为0x0c,(unsigned int)0x40010C0C &= ~(1<<5)设置PB5为低电平。

猜你喜欢

转载自blog.csdn.net/qq_43445076/article/details/88896531