stm32 IO口:
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;
GPIOB->ODR|=1<<5;
GPIOE->CRL&=0XFF0FFFFF;
GPIOE->CRL|=0X00300000;
GPIOE->ODR|=1<<5;
STM32 IO口由7个寄存器控制,结构体如下:
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
32位CRH与CRL分别控制每组IO口的高八位与低八位的模式及输出速率,每个IO口占用四位
模式控制如下图所示:
程序如下
GPIOB->CRL&=0XFF0FFFFF;//将PB5寄存器清零
GPIOB->CRL&=0XF0FFFFFF;//将PB6寄存器清零
GPIOB->CRL|=0X08300000;
GPIOB->ODR|=1<<5;
查表可知以上语句将
PB5设置为推挽输出,最大输出速率为50MHz
PB6设置为上拉输入
外设时钟使能寄存器
RCC->APB2ENR=|1<<5