网站科技感页面设计,做网站的像素是多少钱,阳江网上车管所,电子商务网站 icp备案一、概述 本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置#xff0c;输出模式配置。以STM32F10xxx系列为例#xff0c;配置PA8、PD2端口作为输出#xff0c;输出高/低电平。
二、配置流程 1#xff09;GPIO外设时钟 通过查找STM32F10xxx中文参考手册得知#xf…
一、概述 本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置输出模式配置。以STM32F10xxx系列为例配置PA8、PD2端口作为输出输出高/低电平。
二、配置流程 1GPIO外设时钟 通过查找STM32F10xxx中文参考手册得知GPIO PORT口的时钟配置在RCC_APB2ENR寄存器的第2~6位如下图
使能PORTA 和 PORTD 的时钟
RCC-APB2ENR | 1 2;//enable portA clk
RCC-APB2ENR | 1 5;//enable portD clk 2 配置GPIO模式 PORT A的PIN 8和PORT D的PIN 2配置为通用推挽PP输出模式GPIO速度配置为50MHZ。CRL寄存器配置的是PIN0~7CRH寄存器配置的是PIN8~15。 GPIOA-CRH 0xFFFFFFF0;
GPIOA-CRH | 0x3; //GPIO PORTA PIN 8 cfg PP output 50MHZ
GPIOD-CRL 0xFFFFF0FF;
GPIOD-CRL | 0x3 8; //GPIO PORTD PIN 2 cfg PP output 50MHZ 3配置 IO口输出电平 有如下几种方式 a配置ODR寄存器 GPIOA-ODR | 1 8;//GPIO PORT A PIN8 cfg output level 1
GPIOA-ODR ~(1 8);//GPIO PORT A PIN8 cfg output level 0GPIOD-ODR | 1 2;//GPIO PORT D PIN2 cfg output level 1
GPIOD-ODR ~(1 2);//GPIO PORT D PIN2 cfg output level 0 b配置BSRR和BRR寄存器 GPIOA-BSRR 1 8; //GPIO PORTA PIN8 cfg output level 1GPIOA-BSRR 1 24; //GPIO PORTA PIN8 cfg output level 0GPIOD-BSRR 1 2; //GPIO PORTD PIN2 cfg output level 1GPIOD-BSRR 1 18; //GPIO PORTD PIN2 cfg output level 0 注如果出现同时配置BR2和BS2为1即端口需要置位且需要复位则此时置位生效电平输出为1。 GPIOA-BRR 1 8; //GPIO A PIN 8 cfg output level 0GPIOD-BRR 1 2; //GPIO D PIN 2 cfg output level 0
三、ODR和BSRR、BRR的区别 ODR 可读写相对耗时序BSRR和BRR只能写但不耗时序。由上可知配置PA8输出电平。
ODR寄存器配置的时候只需配置端口8其它bit位要保持原样。因此操作如下
GPIOA-ODR | 1 8;读取ODR寄存器-或运算-写入
(GPIOA-ODR | 1 8-GPIOA-ODR GPIOA-ODR | (1 8))
而BSRR和BRR寄存器只需 GPIOA-BSRR 1 8;GPIOA-BRR 1 8; 赋值即可因为如下特性 在手册上有如下描述 即用BSRR和BRR去改变管脚状态的时候没有被中断打断的风险。也就不需要关闭中断。因为BSRR寄存器的操作只有一个动作赋值。