本帖最后由 szopenmcu 于 2015-4-7 16:49 编辑
第一章 金龙107——LED实验
1.1 GPIO简介:GPIO(General Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。GPIO口一是个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。因此,GPIO口的使用非常广泛。 1.2 实验说明:在本实验中,主要使用到开发板上的LED灯,实现跑马灯, 主要跳线帽:JP4和JP7都接在2-3上 1.3 硬件描述:
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps35B.tmp.jpg 想要控制 LED 灯,当然是通过控制 STM32 芯片的 I/O 引脚电平的高低来实现。在 STM32 芯片上,I/O 引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为 GPIO (General-purpose I/O)。而 GPIO 引脚又被分为GPIOA、GPIOB„„GPIOG 不同的组,每组端口分为 0~15,共 16 个不同的引脚,对于不同型号的芯片,端口的组和引脚的数量不同,在金龙107 (stm32f107vc)上面有(A„„E)5个组,80个IO。 1.4程序说明:首先说明一点,STM32的启动过程,并不是从main开始的,而是从启动文件里面开始,然后又跳转到main(详细说明可以参见STM32启动文件说明),并且在启动文件中,跳转到main之前,已经调用了SystemInit();,实现对STM32的时钟配置。 然后从main函数开始说明, 第一步SystemInit();这个函数官方已经写好,其主要配置了STM32的时钟,该函数,在启动文件中已经被调用了(详见STM32启动文件的说明),所以这里可以去掉。
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps35C.tmp.jpg 接下来是对LED的初始化,其中该函数在hw_config.h中,首先是对端口的初始化,对端口的初始化,要注意的是首先要声明定义结构体,然后开启对应端口的时钟,然后对端口的结构体进行配置(配置说明详见固件库说明)。 file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps35D.tmp.jpg 下面就是对四个LED灯的初始化,在本例程中我们采用了宏定义,如下图,详见hw_config.h。 file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps35E.tmp.jpg 在while循环中,实现LED灯的循环亮灭。 1.5实验现象:LED循环点亮
|