STM32实验一:GPIO之流水灯
来源:互联网 发布:百度网站怎么优化排名 编辑:程序博客网 时间:2024/05/17 02:51
前面写过一篇关于STM32单片机的GPIO的文章,本来是打着从实用角度来做的实验,但是发现不积跬步无以至千里啊,咱们从头开始,先做一个最简单的,入门级的,单片机系统中的hello world,流水灯实验!
我手中有一个神舟3的开发板,我就用这个板子来做实验,板子中的实验一共用到4个LED灯来做流水灯的实验,这里我们也用这4个灯,他们分别是GPIOF中的6、7、8、9这4个。
1、首先我们复制我们之前做过的模板工程到一个新建文件夹中,(如,你可以取个名字叫流水灯实验的文件夹)神舟开发板的例程中在项目中添加了两个文件,分别是led.c和led.h,这是一种习惯,每做一个项目的时候都在其中添加一个.c和对应的.h文件,这样可以是工程看起来更加规整!本来我是不想添加这个的,这里为了良好的编程习惯,我们也添加一个!并且我更改了模板文件中的一些名字,在下图中我将标志出来
2、接下来我们来看一下程序,程序一共分为两部分,一个main.c,一个led.c,因为程序比较简单,所以在led.h中我们就不做任何定义了,这也省去了一些麻烦!按照习惯,我们先从main程序看起!
#include "stm32f10x.h"#include "led.h"void LED_config(void);//使用函数前先进行函数声明/******************************************************* * 函数名称: delay* 输入: 无* 输出: 无* 功能描述: 延时函数 *******************************************************/void delay(vu32 nCount){ for(; nCount != 0; nCount--);}/******************************************************* * 函数名称: main* 输入: 无* 输出: 无* 功能描述: 主函数 *******************************************************/int main(void){ LED_config(); //调用4个LED灯初始化函数 while(1) {GPIO_ResetBits(GPIOF,GPIO_Pin_6);//第一灯亮delay(800000); //延时GPIO_SetBits(GPIOF,GPIO_Pin_6);//第一灯灭delay(800000); //延时GPIO_ResetBits(GPIOF,GPIO_Pin_7); //第二灯亮delay(800000); //延时GPIO_SetBits(GPIOF,GPIO_Pin_7); //第二灯灭delay(800000); //延时GPIO_ResetBits(GPIOF,GPIO_Pin_8); //第三灯亮delay(800000); //延时GPIO_SetBits(GPIOF,GPIO_Pin_8); //第三灯灭delay(800000); //延时GPIO_ResetBits(GPIOF,GPIO_Pin_9); //第四灯亮delay(800000); //延时GPIO_SetBits(GPIOF,GPIO_Pin_9); //第四灯灭delay(800000); //延时 }}
分析一下程序,LED_config();这个函数是调用了led.c中的函数,一会会贴出led.c文件,GPIO_ResetBits、
GPIO_SetBits这两个函数是库文件为我们提供的GPIO操作函数,我们贴出来看一下
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){ /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Pin)); GPIOx->BRR = GPIO_Pin;
}
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){ /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Pin)); GPIOx->BSRR = GPIO_Pin;}这两个函数的作用就是将端口置1或者清0
我们再来看一下led.c文件
void LED_config(void){GPIO_InitTypeDef GPIO_InitStructure;/* 配置神舟III号LED灯使用的GPIO管脚模式*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); /*使能LED灯使用的GPIO时钟*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOF, &GPIO_InitStructure); /*神州III号使用的LED灯相关的GPIO口初始化*/}这里主要就是GPIO的配置,前面我们也说过,一共3个步奏,
1)、使能GPIOD的时钟
2)、填充GPIO的属性结构体
3)、传递参数至初始化函数
这里要注意,我们将管脚模式配置为推挽输出模式,这个需要注意一下,因为之后的实验中我们还会给关键配置成其他的模式程序编写完毕,编译下载到实验板中完成实验!
0 0
- STM32实验一:GPIO之流水灯
- [STM32][基础]GPIO流水灯
- stm32流水灯实验
- LPC1769 GPIO流水灯实验
- STM32之GPIO按键实验
- 【连载】【STM32神舟III号实验例程】流水灯实验(实验一)
- 实验一:流水灯实验
- stm32之GPIO配置及库函数学习笔记——以流水灯为例
- STM32 GPIO——流水灯例程 学习总结
- ARM学习之GPIO实现流水灯
- STM32 GPIO LED实验
- STM32 普通定时器(TIM3)中断 实现流水灯实验
- arm7 力天电子 lpc2148 GPIO之花样流水灯
- jz2440裸板开发之GPIO:实现流水灯
- Zigbee 基础实验之流水灯
- STM32之GPIO笔记
- STM32之GPIO
- STM32之GPIO&AFIO
- 4、数组与方法(三)
- Android ScrollView反弹效果的实现
- from nova to ironic (2)
- Thinking In Java学习笔记之enum状态机
- 基于邻接矩阵和邻接表的两种方法实现无向图的BFS和DFS
- STM32实验一:GPIO之流水灯
- GLIBCXX_3.4.15 not found 问题
- mfc第五天
- OPENGL混合
- 标准 C I/O
- WAMP下安装PEAR和PHPUnit
- C++第二章
- 性能优化
- DEDECMS全站伪静态详细教程(首页、列表、文章页)