stm32控制IO口的几个寄存器

stm32控制IO口的几个寄存器_第1张图片

        stm32的每一个IO口都由七个寄存器控制。如果我们要控制这个IO口输出高电平或者是低电平,那么我们就要通过配置这七个寄存器来达到想要达到的目的。

        他含有两个32位的配置寄存器,分别为CRH和CRL,两个32位的数据寄存器,分别为IDR和ODR。一个32位的置位/复位寄存器,叫BSRR和一个16位的复位寄存器BRR。还有一个32位的锁存寄存器LCKR


CRH和CRL主要配置IO口的模式和速率。

stm32控制IO口的几个寄存器_第2张图片
图片发自App

        可以看出,CRL控制着每组IO端口低八位的模式,CRH控制着每组IO端口高八位的模式。

通过操控CRL和CRH这两个寄存器来配置IO口的模式和速度的函数是这个。端口初始化函数。

stm32控制IO口的几个寄存器_第3张图片
图片发自App

IDR是端口输入数据寄存器。只用了低16位,她是一个只读寄存器,并且只能以16位的形式输出。每个值对应每个IO口的电平状态。如果想要读取某个IO口的电平状态,只要读取这个寄存器,再读取其中的某个位就可以了。

操作IDR读取IO口电平的函数是

stm32控制IO口的几个寄存器_第4张图片
图片发自App

读取的结果往往是0或1。

ODR是端口输出寄存器。

stm32控制IO口的几个寄存器_第5张图片
图片发自App


她也只用了低16位,可读可写。通过读取该寄存器的数据可以判断当前IO口的输出状态。通过向该寄存器写入数据,就可以改变该IO口的输入电平。

能够操控ODR读写的函数是以下这个函数。

stm32控制IO口的几个寄存器_第6张图片
图片发自App

BSRR是端口位设置/清除寄存器。

这个寄存器和ODR有点类似,通过这个寄存器,我们也能够控制GPIO端口的输出位是1或0。

stm32控制IO口的几个寄存器_第7张图片
图片发自App

stm32控制IO口的几个寄存器_第8张图片
图片发自App

BRR是端口位清除寄存器,她的作用与BSRR的高16位雷同。

通过BSRR和BRR设置端口输出,是通过GPIO_SetBits()和GPIO_ResetBits()实现的。

通过以上这些函数就能够设置电平高低。从而达到自己想要的状态。

你可能感兴趣的:(stm32控制IO口的几个寄存器)