在做项目的时候,有事要临时的改变端口的输入输出或者其他状态,这个时候如果用库操作显得繁琐,代码量大,如果直接操作寄存器,则简单快捷干净。STM32寄存器如下:
端口模式寄存器(GPIOx_MODER):每IO口两位 1 MODERy[1:0]:(y=0…15) 2 00:输入(复位状态) 3 01:通用输出模式 4 10:复用功能模式 5 11:模拟模式
端口输出类型寄存器(GPIOx_OTYPER):每IO口一位,高16位不用 1 OTy[1:0]:(y=0…15) 2 0:输出推挽(复位状态) 3 1:输出开漏
端口输出速度寄存器(GPIOx_OSPEEDR):每IO口两位 1 OSPEEDRy[1:0]:(y=0…15) 2 00:2MHz 3 01:25MHz 4 10:50MHz 5 11:100MHz
端口上拉下拉寄存器(GPIOx_PUPDR): 1 PUPDRy[1:0]:(y=0…15) 2 00:无上拉或下拉 3 01:上拉 4 10:下拉 5 11:保留
端口输入数据寄存器(GPIOx_IDR): 1 IDRy[15:0]:(y=0…15) 2 端口输入数据
端口输出数据寄存器(GPIOx_ODR): 1 ODRy[15:0]:(y=0…15) 2 端口输出数据
端口置位复位寄存器(GPIOx_BSRR): 1 BRy[15:0]:位31:16 2 0:不会对相应的ODRx位执行任何操作 3 1:对相应的ODRx位进行复位 4 5 BSy[15:0]:位15:0 6 0:不会对相应的ODRx位执行任何操作 7 1:对相应的ODRx位进行置位 8 同时对BSx和BRx置位,则BSx的优先级更高