STM32F407学习之GPIO
来源:互联网 发布:网络摄像机的价格 编辑:程序博客网 时间:2024/06/04 22:40
一、简单介绍
最近,通过百度之星拿到了一块STM32F4-DISCOVERY的开发板,这块板子基于STM32F407VGT6芯片,包括一个板载的有嵌入式调试工具接口的ST-LINK/V2,ST MEMS数字加速器,ST MEMS 数字麦克风,音频DAC集成了class D扬声器驱动器,LED灯,按钮和一个USB OTG的micro-AB连接器。这块板子的功能也比较强大,很适合学习,下面是官方资料对这块板子的说明,供参考:
- STM32F4DISCOVERY提供如下个特点:
STM32F407VGT6微控制器有1M的FLASH存储器,192K的RAM,LQFP100封装
板上的ST-LINK/V2可以使用选择的方式把套件切换成一个独立的 ST-LINK/V2来使用(用SWD连接器来编程和调试)
板子电源:通过USB总线或者外部5V电源来供电
外部应用电源:3V和5V
LIS302DL, ST MEMS运动传感器,3轴数字输出加速器
MP45DT02,ST MEMS音频传感器,全向数字麦克风
CS43L22,音频DAC集成了CLASS D扬声器驱动器
8个LED指示灯
- LD1(红/绿)用于USB通讯
- LD2(红)用于3.3V上电
- 4个用户LED灯,LD3(橙),LD4(绿),LD5(红)和LD6(蓝)
- 2个USB OTG的LED灯,LD7(绿)VBus,LD8(红)过流指示 2个按钮,(用户按键和复位健)USB OTG,micro-AB连接器
LQFP100 IO口的扩展头,可以快速连接成原型板,易于探测
和大家一样,刚开始学一块芯片就先拿GPIO来入门一下,写一个LED闪烁的程序,找一找入门的成就感,希望大家多多指点。
二、GPIO介绍
STM32F407系列芯片有PA‐PE 5×16共 80 个复用 IO口, 每个GPIO都有四个32位的配置寄存器(GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR 和GPIOx_PUPDR),两个32位的数据寄存器(GPIOx_IDR 和 GPIOx_ODR),一个32位的set/reset寄存器(GPIOx_BSRR),一个32位的锁存寄存器(GPIOx_LCKR)和两个32位的复用功能选择寄存器(GPIOx_AFRH
和 GPIOx_AFRL)。
主要特性有以下几个:
● 总共有16个I/OS
● 输出状态:推挽输出或者开漏+上拉/下拉输出
● 输出数据可以来自输出寄存器GPIOx_ODR或者来自外设(alternate function output)
● 每个I/O有速率选择
●输入状态:浮空,上拉、下拉,模拟输入
● 输入数据到输入数据寄存器GPIOx_IDR或者输入到外设(alternate function input)
● Bit set and reset register (GPIOx_BSRR) for bitwise write access to GPIOx_ODR
● Locking mechanism (GPIOx_LCKR) provided to freeze the I/O configuration
● Analog function
● Alternate function input/output selection registers (at most 16 AFs per I/O)
● Fast toggle capable of changing every two clock cycles
● Highly flexible pin multiplexing allows the use of I/O pins as GPIOs or as one of several
peripheral functions
懒得翻译了,呵呵。
板上LED说明
LD1 COM:LD1默认状态是红色。LD1变成绿色指示PC和ST-LINK/V2之间的通讯在进
行中
LD2 PWR:红色LED指示板子已供电
用户LD3:橙色LED是用户的LED,连接到STM32F407VGT6的PD13脚
用户LD4:绿色LED是用户的LED,连接到STM32F407VGT6的PD12引脚
用户LD5:红色LED是用户的LED,连接到STM32F407VGT6的PD14引脚
用户LD6:蓝色LED是用户的LED,连接到STM32F407VGT6的PD15引脚
USB LD7:当VBUS在CN5上时,绿色LED指示,连接到STM32F407VGT6的PA9引脚
USB LD8:红色LED指示CN5的VBUS的过流,连接到STM32F407VGT6的PD5引脚
三 程序
直接上程序,使用库函数
#include "stm32f4xx.h"GPIO_InitTypeDef GPIO_InitStructure;//initialize the GPIO ports for leds;void LED_Init(void){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStructure);}//delay functionvoid Delay(vu32 nCount){for(;nCount!=0;nCount--);}int main(void){ LED_Init();while (1){GPIO_SetBits(GPIOD,GPIO_Pin_12);Delay(0xfffff);GPIO_ResetBits(GPIOD,GPIO_Pin_12);Delay(0xfffff);GPIO_SetBits(GPIOD,GPIO_Pin_13);Delay(0xfffff);GPIO_ResetBits(GPIOD,GPIO_Pin_13);Delay(0xfffff);GPIO_SetBits(GPIOD,GPIO_Pin_14);Delay(0xfffff);GPIO_ResetBits(GPIOD,GPIO_Pin_14);Delay(0xfffff);GPIO_SetBits(GPIOD,GPIO_Pin_15);Delay(0xfffff);GPIO_ResetBits(GPIOD,GPIO_Pin_15);Delay(0xfffff);}//return 0; will be never reachable.}
- STM32F407学习之GPIO
- STM32F407学习之GPIO驱动NOKIA LCD5110
- STM32F407学习笔记----GPIO
- STM32F407之GPIO
- STM32F407学习之初始STM32F407
- STM32F407学习笔记二(GPIO)
- stm32f407之GPIO(操作寄存器)
- stm32f407之GPIO(操作寄存器)
- STM32F407学习之时钟
- STM32F407学习之Interrupts/Event
- STM32F407学习之硬件认识
- STM32F407的GPIO操作
- STM32F407学习之悲催事故
- LPC2103学习之GPIO
- 嵌入式学习之GPIO
- STM32F407学习之创建工程(KEIL-ARM)
- ARM学习之GPIO实验
- 学习linux之GPIO口
- 修改用友连锁零售门店系统-销售单制单选择物料界面,显示存货自定义项
- hdu 1150 Machine Schedule(最小顶点覆盖)
- tat函数说明
- Data guard常用视图
- 黑马程序员-7K面试之二交通灯管理
- STM32F407学习之GPIO
- C++访问控制
- UNIX环境高级编程——线程同步之互斥锁、读写锁和条件变量(小结)
- 解决listview中出现重复的项
- 为什么每次打开Myeclipse都要重新配置Tomcat
- 按键配置文件位置
- 数据挖掘的常见方法
- Hud 1856 More is Better[并查集]
- 取扩展名