欢迎来到天天文库
浏览记录
ID:955604
大小:1.33 MB
页数:12页
时间:2017-10-18
《stm32实现跑马灯实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、6.1STM32IO简介本章将要实现的是控制ALIENTEK战舰STM32开发板上的两个LED实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的IO口输出。了解了STM32的IO口如何输出的,就可以实现跑马灯了。通过这一章的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。这一章节因为是第一个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。为了小节标号与后面实验章节一样,这里我们不另起一节来讲。在讲解STM32的GPIO之前,首先打开我们光盘的第一个固件库版本实验工程跑马灯实验工程
2、(光盘目录为:“4,程序源码标准例程-V3.5库函数版本实验1跑马灯/USER/LED.Uv2”),可以看到我们的实验工程目录:图6.1.1跑马灯实验目录结构接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。①组FWLib下面存放的是ST官方提供的固件库函数,里面的函数我们可以根据需要添加和删除,但是一定要注意在头文件stm32f10x_conf.h文件中注释掉删除的源文件对应的头文件,这里面的文件内容用户不需要修改。②组CORE下面存放的是固件库必须的核心文件和启动文件。这里面的文件用户不需要修改。③组SYSTEM是
3、ALIENTEK提供的共用代码,这些代码的作用和讲解在第五章都有讲解,大家可以翻过去看下。④组HARDWARE下面存放的是每个实验的外设驱动代码,他的实现是通过调用FWLib下面的固件库文件实现的,比如led.c里面调用stm32f10x_gpio.c里面的函数对led进行初始化,这里面的函数是讲解的重点。后面的实验中可以看到会引入多个源文件。⑤组USER下面存放的主要是用户代码。但是system_stm32f10x.c文件用户不需要修改,同时stm32f10x_it.c里面存放的是中断服务函数,这两个文件的作用在3.1节有讲解,
4、大家可以翻过去看看。Main.c函数主要存放的是主函数了,这个大家应该很清楚。针对第①步中怎么随意添加和删除固件库文件,这里我们稍微讲解一下。首先从上面的图中可以看到,stm32f10x_gpio.c源文件下面include了好几个头文件,其中有一个stm32f10x_conf.h,这个文件会被每个固件库源文件引用。我们可以打开看看里面的内容:图6.1.2stm32f10x_conf文件内容从图中可以看出,在头文件stm32f10x_conf.h文件中,我们包含了四个.h头文件,那是因为我们的FWLib组下面引入了相应的4个.c源
5、文件。同时大家记住,后面三个源文件stm32f10x_rcc.c,stm32f10x_usart.c以及misc.c在每个实验基本都需要添加。在这个实验中,因为LED是关系到STM32的GPIO,所以我们增加了stm32f10x_gpio.c和头文件stm32f10x_gpio.h的引入。添加和删除固件库源文件的步骤是:1.在stm32f10x_conf.h文件引入需要的.h头文件。这些头文件在每个实验的目录STM32F10x_FWLibinc下面都有存放。2.在FWLib下面加入步骤一中引入的.h头文件对应的源文件。记住最好
6、一一对应,否则就有可能会报错。这些源文件在每个实验的STM32F10x_FWLibsrc目录下面都有存放。添加方法请参考3.3节的内容。最后我们讲解一下这些组之间的层次结构:图6.1.3代码层次结构图从层次图中可以看出,我们的用户代码和HARDWARE下面的外设驱动代码再不需要直接操作寄存器,而是直接或间接操作官方提供的固件库函数。但是后面我们的为了让大家更全面方便的了解外设,我们会增加重要的外设寄存器的讲解,这样对底层知识更加了解,方便我们深入学习固件库。准备内容我们就讲解到这里,接下来我们就要进入我们跑马灯实验的讲解部分了
7、。这里需要说明一下,我们在讲解固件库之前会首先对重要寄存器进行一个讲解,这样是为了大家对寄存器有个初步的了解。大家学习固件库,并不需要记住每个寄存器的作用,而只是通过了解寄存器来对外设一些功能有个大致的了解,这样对以后的学习也很有帮助。首先要提一下,在固件库中,GPIO端口操作对应的库函数函数以及相关定义在文件stm32f10x_gpio.h和stm32f10x_gpio.c中。STM32的IO口相比51而言要复杂得多,所以使用起来也困难很多。首先STM32的IO口可以由软件配置成如下8种模式:1、输入浮空2、输入上拉3、输入下拉
8、4、模拟输入5、开漏输出6、推挽输出7、推挽式复用功能8、开漏复用功能每个IO口可以自由编程,但IO口寄存器必须要按32位字被访问。STM32的很多IO口都是5V兼容的,这些IO口在与5V电平的外设连接的时候很有优势,具体哪些IO口是5V兼容的,可
此文档下载收益归作者所有