NO.2GPIO
时间:10-02
整理:3721RD
点击:
今天看一下GPIO的控制方法,stm32F4的GPIO控制主MODE,OTYPER,OSEPEDR,PUPDR,ODR,IDR,AFRH,AFRL等8个寄存器控制。本次首先进行GPIO的输出设置,以控制板子上的led灯。根据电路图上可以看出板子的led2,led3分别连载PB3,PB7上,输出高电平点亮。 下面我单独设置PB3,为输出模式 首先开启PB的时钟:RCC->AHBENR=1<<1;
设置GPIO的模式:GPIOB->MODE |= 1<<(3*2)
设置GPIO为推挽模式:GPIOB->OTYPER |=0<<3
设置GPIO的速度:GPIOB->OSPEED |=3<<(3*2)
设置GPIO的上下拉模式:GPIOB->PUPDR |=0<<(3*2)
设置GPIO的输出电平:GPIOB->ODR |=1<<3
经过以上寄存器的设置,PB3就可以输出高电平,点亮led了。不过为了防止某些未知的问题,设置某些位之前首先应该清零。例如GPIOB->MODE &= ~(1<<(3*2) )经过此项设置,就可以将对应位清零。就这次首先讲解原理下次代码讲解代码
设置GPIO的模式:GPIOB->MODE |= 1<<(3*2)
设置GPIO为推挽模式:GPIOB->OTYPER |=0<<3
设置GPIO的速度:GPIOB->OSPEED |=3<<(3*2)
设置GPIO的上下拉模式:GPIOB->PUPDR |=0<<(3*2)
设置GPIO的输出电平:GPIOB->ODR |=1<<3
经过以上寄存器的设置,PB3就可以输出高电平,点亮led了。不过为了防止某些未知的问题,设置某些位之前首先应该清零。例如GPIOB->MODE &= ~(1<<(3*2) )经过此项设置,就可以将对应位清零。就这次首先讲解原理下次代码讲解代码
居然是沙发呀,不错不错
这么写程序的话会不会很累啊~~
这样写确实很辛苦,就看你是做什么的了。如果是实际的项目,这样写程序可以降低硬件成本,也可以更好地了解西片内部的寄存器,也方便以后更快的入门其他芯片,毕竟所有芯片归根结底全部是配置寄存器