21-10-15_STM32_GPIO_3

配置寄存器操作IO口步骤

1.初始化HAL库:

HAL_Init();

2.初始化系统时钟:

Stm32_Clock_Init(432,25,2,9);

3.使能IO口时钟,配置IO口时使能寄存器:RCC->AHB1ENR

4.初始化IO口模式,配置四个寄存器

端口模式寄存器(MODER)

端口输出类型寄存器(OTYPER)

端口输出速度寄存器(OSPEEDER)

上下拉寄存器(PUPDR)

5.操作IO口,输出高低电平

配置ODR或者BSRR寄存器,配置寄存器GPIOX_ODR或者BSRR

写跑马灯代码(寄存器)

#include“sys.h”
#include“delay.h”
#include“usart.h”
int main(){
	HAL_Init();  
    delay_init(216);
	Stm32_Clock_Init(432,25,2,9);
	RCC->AHB1ENR |= 1<<1;
/* A|=B 表示A与B按位或运算后的值赋给A。1进行或运算,相当于为零的全部置一,为零的不变,与0进行或运算,全都不变
1<<1表示1的二进制位左移一位,左边的数为被移动数,右边的数为移位数
*/
//配置PB0和PB1
	GPIOB->MODER = 0x05;//通用输出模式
    GPIOB->OTYPER = 0x00;//推挽
    GPIOB->OSPEEDER = 0x0f;// 高速
    GPIOB->PUPDR = 0x05;//上拉
}
while(1){
    GPIOB->BSRR = 0x03;//置1
    delay_ms(500);
    GPIOB->BSRR = 0x00030000//置0  
	delay_ms(500);
}

上一篇:STM32CubeMX安装搭建环境、编译烧写流水灯


下一篇:初次stack-overflow 提交答案