微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > NO.2GPIO

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) )经过此项设置,就可以将对应位清零。就这次首先讲解原理下次代码讲解代码

居然是沙发呀,不错不错

这么写程序的话会不会很累啊~~

这样写确实很辛苦,就看你是做什么的了。如果是实际的项目,这样写程序可以降低硬件成本,也可以更好地了解西片内部的寄存器,也方便以后更快的入门其他芯片,毕竟所有芯片归根结底全部是配置寄存器

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top