跑马灯实验-STM32F4开发

合集下载

2020年STM32实现跑马灯实验精编版

2020年STM32实现跑马灯实验精编版

6.1 STM32 IO简介本章将要实现的是控制ALIENTEK战舰STM32开发板上的两个LED实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的IO口输出。

了解了STM32的IO口如何输出的,就可以实现跑马灯了。

通过这一章的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。

这一章节因为是第一个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。

为了小节标号与后面实验章节一样,这里我们不另起一节来讲。

在讲解STM32的GPIO之前,首先打开我们光盘的第一个固件库版本实验工程跑马灯实验工程(光盘目录为:“4,程序源码\标准例程-V3.5库函数版本\实验1跑马灯/USER/LED.Uv2”),可以看到我们的实验工程目录:图6.1.1 跑马灯实验目录结构接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。

①组FWLib下面存放的是ST官方提供的固件库函数,里面的函数我们可以根据需要添加和删除,但是一定要注意在头文件stm32f10x_conf.h文件中注释掉删除的源文件对应的头文件,这里面的文件内容用户不需要修改。

②组CORE下面存放的是固件库必须的核心文件和启动文件。

这里面的文件用户不需要修改。

③组SYSTEM是ALIENTEK提供的共用代码,这些代码的作用和讲解在第五章都有讲解,大家可以翻过去看下。

④组HARDWARE下面存放的是每个实验的外设驱动代码,他的实现是通过调用FWLib下面的固件库文件实现的,比如led.c里面调用stm32f10x_gpio.c里面的函数对led进行初始化,这里面的函数是讲解的重点。

后面的实验中可以看到会引入多个源文件。

⑤组USER下面存放的主要是用户代码。

但是system_stm32f10x.c文件用户不需要修改,同时stm32f10x_it.c里面存放的是中断服务函数,这两个文件的作用在3.1节有讲解,大家可以翻过去看看。

STM32实现跑马灯实验

STM32实现跑马灯实验

6.1 STM32 IO简介本章将要实现的是控制ALIENTEK战舰STM32开发板上的两个LED实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的IO口输出。

了解了STM32的IO口如何输出的,就可以实现跑马灯了。

通过这一章的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。

这一章节因为是第一个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。

为了小节标号与后面实验章节一样,这里我们不另起一节来讲。

在讲解STM32的GPIO之前,首先打开我们光盘的第一个固件库版本实验工程跑马灯实验工程(光盘目录为:“4,程序源码\标准例程-V3.5库函数版本\实验1跑马灯/USER/LED.Uv2”),可以看到我们的实验工程目录:图6.1.1 跑马灯实验目录结构接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。

①组FWLib下面存放的是ST官方提供的固件库函数,里面的函数我们可以根据需要添加和删除,但是一定要注意在头文件stm32f10x_conf.h文件中注释掉删除的源文件对应的头文件,这里面的文件内容用户不需要修改。

②组CORE下面存放的是固件库必须的核心文件和启动文件。

这里面的文件用户不需要修改。

③组SYSTEM是ALIENTEK提供的共用代码,这些代码的作用和讲解在第五章都有讲解,大家可以翻过去看下。

④组HARDWARE下面存放的是每个实验的外设驱动代码,他的实现是通过调用FWLib下面的固件库文件实现的,比如led.c里面调用stm32f10x_gpio.c里面的函数对led进行初始化,这里面的函数是讲解的重点。

后面的实验中可以看到会引入多个源文件。

⑤组USER下面存放的主要是用户代码。

但是system_stm32f10x.c文件用户不需要修改,同时stm32f10x_it.c里面存放的是中断服务函数,这两个文件的作用在3.1节有讲解,大家可以翻过去看看。

stm32跑马灯实验

stm32跑马灯实验

29:28, 25:24, 21:20, 17:16, 13:12, 9:8, 5:4, 1:0位(MODy)为:端口模式位(y = 8…15) (Port x mode bits) 00:输入模式(复位后的状态) 01:输出模式,最大速度10MHz 10:输出模式,最大速度2MHz 11:输出模式,最大速度50MHz
给个实例,比如我们要设置PORTC的11位为上拉输入,12位为推挽输出。代码如下: GPIOC->CRH&=0XFFF00FFF;//清掉这2个位原来的设置,同时也不影响其他位的设置 GPIOC->CRH|=0X00038000; //PC11输入,PC12输出 GPIOC->ODR=1<<11;//PC11上拉 通过这 3 句话的配置,我们就设置了 PC11 为上拉输入,PC12 为推挽输出。
详见上面端口模式配置表
该寄存器的复位值为0X4444 4444,从上图可以看到,复位值其实就是配置端口为浮空输入模式。从上图还可 以得出:STM32的CRL控制着每个IO端口(A~G)的低8位的模式。每个IO端口的位占用CRL的4个位,高两位为 CNF,低两位为MODE。这里我们可以记住几个常用的配置,比如0X4表示模拟输入模式(ADC用)、0X3表示推 挽输出模式(做输出口用,50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用输出(使用IO口 的第二功能,50M速率)。
对于 I2C 接口,假如使用 400k 波特率,若想把余量留大些,那么用 2M 的 GPIO 的引脚速度或许不够,这时可以选 用 10M 的 GPIO 引脚速度。 对于 SPI 接口,假如使用 18M 或 9M 波特率,用 10M 的 GPIO 的引脚速度显然不够了,需要选用 50M 的 GPIO 的引脚 速度。 除此之外,使用端口设置时,有以下几点需要注意: GPIO 口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。 在复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式。 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。 GPIO 口的配置具有上锁功能,当配置好 GPIO 口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。

跑马灯实验报告

跑马灯实验报告

一、实验目的1. 熟悉嵌入式系统硬件电路的搭建与调试;2. 掌握C语言编程,实现跑马灯功能;3. 理解并掌握GPIO口操作,学习定时器中断的使用。

二、实验环境1. 开发板:STM32F103C8T6开发板2. 编译器:Keil uVision53. 软件库:STM32标准外设库三、实验原理跑马灯实验是通过控制LED灯的亮灭,实现LED灯依次点亮的效果。

实验原理如下:1. GPIO口控制:将LED灯连接到开发板的GPIO口,通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;2. 定时器中断:定时器产生中断,实现LED灯点亮与熄灭的时间间隔;3. 循环控制:通过循环控制LED灯的点亮顺序,实现跑马灯效果。

四、实验步骤1. 硬件电路搭建(1)将LED灯的正极连接到开发板的GPIO口,负极接地;(2)将开发板的电源和地线连接到电源模块。

2. 软件编程(1)在Keil uVision5中创建项目,并导入STM32标准外设库;(2)编写程序,实现以下功能:a. 初始化GPIO口,将LED灯连接的GPIO口配置为输出模式;b. 初始化定时器,设置定时器中断周期,使LED灯点亮与熄灭的时间间隔为1ms;c. 编写定时器中断服务程序,控制LED灯的点亮与熄灭;d. 编写主函数,实现LED灯依次点亮的效果。

3. 编译与下载(1)编译程序,生成可执行文件;(2)将开发板连接到计算机,通过串口下载程序到开发板。

4. 实验调试(1)打开串口调试助手,观察LED灯的点亮与熄灭效果;(2)调整程序参数,优化跑马灯效果。

五、实验结果与分析1. 实验结果(1)LED灯依次点亮,实现跑马灯效果;(2)LED灯点亮与熄灭的时间间隔可调。

2. 实验分析(1)通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;(2)定时器中断实现LED灯点亮与熄灭的时间间隔控制;(3)循环控制实现LED灯依次点亮的效果。

六、实验总结本次实验成功实现了跑马灯功能,加深了对嵌入式系统硬件电路、C语言编程和GPIO口操作的理解。

嵌入式02STM32实验04跑马灯

嵌入式02STM32实验04跑马灯

嵌⼊式02STM32实验04跑马灯开学STM32跑马灯的实验主要就是了解GPIO⼝的配置及使⽤,我这⾥是使⽤库函数进⾏编程,主要需要设置以下两⽅⾯: 1、使能需要使⽤的IO⼝的时钟,⼀共有A、B、C、D、E、F、G七组IO⼝ 2、初始化IO⼝(设置IO⼝的端⼝号(有GPIO_Pin_0 ~ GPIO_Pin_15,共16个IO端⼝)、设置IO⼝的输出速度、设置IO⼝的⼯作模式)代码如下1//端⼝初始化2 #include "led.h"3 #include "stm32f10x.h"45void LED_Init(void)6 {7 GPIO_InitTypeDef GPIO_KST;8910 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能端⼝B和E1112 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //设置端⼝模式为推挽输出13 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //选择端⼝514 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO⼝的速度设置为2MHz15 GPIO_Init(GPIOB, &GPIO_KST); //初始化GPIOB.5161718 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //设置端⼝模式为推挽输出19 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //选择端⼝520 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO⼝的速度设置为2MHz21 GPIO_Init(GPIOE, &GPIO_KST); //初始化GPIOE.522 }主程序1//主程序2 #include "sys.h"3 #include "delay.h"4 #include "led.h"56int main(void)7 {8 delay_init(); //延时初始化9 LED_Init(); //LED初始化10while(1)11 {12 GPIO_ResetBits(GPIOE, GPIO_Pin_5); //关闭PE5端⼝的LED13 GPIO_SetBits(GPIOB, GPIO_Pin_5); //关闭PB5端⼝的LED14 delay_ms(500); //延时100ms15 GPIO_SetBits(GPIOE, GPIO_Pin_5);16 GPIO_ResetBits(GPIOB, GPIO_Pin_5); //打开PB5端⼝的LED17 delay_ms(500); //延时100ms18 }1920 }。

实验三:跑马灯实验

实验三:跑马灯实验

微控制器综合设计与实训实验名称:实验三跑马灯实验实验三:跑马灯实验1 实训任务(1) 编写程序,实现对LED1~LED8的轮流点亮;(2) 仿真调试,调整延时时间,利用仿真示波器观察延时时间长短;(3) 下载程序,观察跑马灯运行状况。

1.1 实验说明本实验将要实现的是控制实训平台上的8个LED灯实现一个类似跑马灯的效果,LED通过控制IO口的高低电平工作,因此实验的关键在于如何控制STM32的IO口输出。

1.2 实验步骤(1) 在实训平台上将IO口与LED(LED1~LED8)连接;(2) 复制工程模板文件夹,新建led.c和led.h文件,并将新建文件加入工程中;(3) 编写led.h文件,声明void LED_Init(void)初始化函数,宏定义LED1~LED8;(4) 编写led.c文件,建立void LED_Init(void)初始化函数,实现对LED灯用到的IO端口的配置,配置为推挽输出,速度为50MHZ;(5) 编写main()函数,实现对LED1~LED8的轮流点亮;(6) 软件仿真,调整延时时间,利用仿真示波器观察延时时间长短;(7) 下载程序,观察跑马灯的运行状况。

2 程序设计2.1 通过数组实现流水灯:2.2 通过宏定义实现流水灯:2.3 通过函数实现流水灯:2.4 通过SYSTICK中断实现流水灯:3硬件原理图设计4 总结通过数组实现流水灯:通过宏定义实现流水灯:通过函数实现流水灯:通过SYSTICK中断实现流水灯:实验心得:本次实验通过四种方法来实现流水灯,分别是通过数组实现流水灯,通过宏定义实现流水灯,通过函数实现流水灯,通过SYSTICK中断实现流水灯。

让我体会到单片机代码的多样性及强大的拓展功能。

MCU通过控制IO口的高低电平来直接控制LED的亮灭,所以本实验的关键是如何控制STM32的IO口输出,来达到我们想要的效果。

就比如灯光秀。

单片机跑马灯实验报告

单片机跑马灯实验报告

单片机跑马灯实验报告摘要:本实验通过使用单片机来控制LED灯进行跑马灯效果的展示。

通过简单的电路连接和编程,我们成功实现了单片机跑马灯的功能。

实验结果表明,单片机跑马灯是一种简单而有效的显示系统,可广泛应用于娱乐和装饰等领域。

引言:跑马灯效果是一种常见且受欢迎的LED显示效果,它可以不断地循环显示LED灯的亮灭轮廓,给人们带来视觉上的愉悦。

单片机是一种可编程的微控制器,广泛应用于电子系统的控制和管理。

在本实验中,我们将利用单片机来实现跑马灯效果,通过编程控制LED灯的亮灭来模拟跑马灯的效果。

材料和方法:本实验所需材料如下:1. 单片机开发板2. LED灯3. 面包板4. 连接线实验步骤:1. 将单片机开发板放置在面包板上,确保连接稳固。

2. 将LED灯连接到面包板上,按照电路图正确连接。

3. 接通电源,将USB线连接到单片机开发板上。

4. 在计算机上打开开发板的编程软件。

5. 编写程序代码,实现跑马灯的效果。

6. 将程序代码下载到单片机开发板中。

7. 观察LED灯的亮灭情况,检查是否实现了跑马灯效果。

结果和讨论:经过实验,我们成功实现了单片机跑马灯的效果。

LED灯按照指定的顺序循环亮灭,产生出跑马灯的效果。

通过调整程序代码,我们可以控制跑马灯的速度和亮灭顺序,使其更加多样化和有趣。

单片机跑马灯是一种简单而有效的LED显示系统。

它可以应用于各种场景,包括室内和室外的装饰灯,新闻标语显示,广告牌等。

跑马灯效果不仅能够吸引人们的目光,还可以起到一定的宣传和广告效果。

总结:通过本次实验,我们了解了单片机的基本原理和应用,并成功实现了单片机跑马灯的效果。

单片机跑马灯具有简单、低成本、可编程等优点,适用于各种需要循环显示效果的场景。

未来,我们可以探索更多有趣的跑马灯效果,并将其应用于实际项目中。

在这个数字化时代,单片机跑马灯有着广阔的应用前景,希望能够为人们的生活和工作带来更多的灵感和乐趣。

基于STM32的跑马灯实验的详细解析

基于STM32的跑马灯实验的详细解析

程序编写 一,程序的实现: 使开发板上的 LED1,LED2,LED3,LED4 循环点亮,实现流水灯效果。
硬件电路图: 二,编写 LED 子程序 1, led.h 头文件 2, led.c 源文件 3, 在 led.c 中如何使能 GPIO 时钟 (1)在库文件 rcc.hk 中找到”RCC_AHB1PeriphClockCmd(); “并将其复制 粘贴下来
成第一个入口函数如下:
(2)第二个入口参数,是个结构体
先将它复制粘贴下来,去掉*号,进行定义这个结构体:
完成第二个入口参数:
(3)用结re 加点来进行各类型的寄存器配置:
配置 GPIO_Mode 寄存器,点击 GPIO_Mode,右键 Go
To
Definition………查询如下:
再点击 GPIOMode_TypeDef,查询如下:
选择合适的类型,将其复制粘贴下来,完成 GPIO_Mode 的配置:
完成 GPIO 的配置:
三, 编写 main 函数
2, 重要的 GPIO 库函数 (1)GPIO 初始化函数 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); (2)设置电平输出函数 输出高电平: void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 输出低电平: void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
基于 STM32 的跑马灯实验的详细解析
我们用 C 语言来再学习 STM32,以加深理解,并且应用相关资料和官方 固件标准库。因此,我们来编写一个跑马灯实验 先前准备 一, 开发环境 安装 MDK5,并且导入 STM32 官方标准库。 STM32 官方标准库名称:stm32f4_dsp_stdperiph_lib 这个 STM32 官方固件标准库以前是可以在 ST 官网下载,现在好像在官 网上找不到了。 二,相关应用资料:STM32F4XX 中文参考手册
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表 5.2.5.4 GPIOx PUPDR 寄存器各位描述
144
STM32F4 开发指南(库函数版)
ALIENTEK 探索者 STM32F407 开发板教程
该寄存器每 2 个位控制一个 IO 口,用于设置上下拉,这里提醒大家,STM32F1 是通过 ODR 寄存器控制上下拉的,而 STM32F4 则由单独的寄存器 PUPDR 控制上下拉,使用起来更加灵活。 复位后,该寄存器值一般为 0。
142
STM32F4 开发指南(库函数版)
ALIENTEK 探索者 STM32F407 开发板教程
对寄存器有个初步的了解。大家学习固件库,并不需要记住每个寄存器的作用,而只是通过了 解寄存器来对外设一些功能有个大致的了解,这样对以后的学习也很有帮助。
首先要提一下,在固件库中,GPIO 端口操作对应的库函数函数以及相关定义在文件 stm32f4xx_gpio.h 和 stm32f4xx_gpio.c 中。
相对于 STM32F1 来说,STM32F4 的 GPIO 设置显得更为复杂,也更加灵活,尤其是复用 功能部分,比 STM32F1 改进了很多,使用起来更加方便。
STM32F4 每组通用 I/O 端口包括 4 个 32 位配置寄存器(MODER、OTYPER、OSPEEDR 和 PUPDR)、2 个 32 位数据寄存器(IDR 和 ODR)、1 个 32 位置位/复位寄存器 (BSRR)、 1 个 32 位锁定寄存器 (LCKR) 和 2 个 32 位复用功能选择寄存器(AFRH 和 AFRL)等。
6.1, STM32F4 IO 口简介 6.2, 硬件设计 6.3, 软件设计 6.4, 下载验证
6.1 STM32F4 IO 简介
本章将要实现的是控制 ALIENTEK 探索者 STM32F4 开发板上的两个 LED 实现一个类似跑 马灯的效果,该实验的关键在于如何控制 STM32F4 的 IO 通过这一章的学习,你将初步掌握 STM32F4 基本 IO 口的使 用,而这是迈向 STM32F4 的第一步。
这一章节因为是第一个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。 为了小节标号与后面实验章节一样,这里我们不另起一节来讲。
在讲解 STM32F4 的 GPIO 之前,首先打开我们光盘的第一个固件库版本实验工程跑马灯实 验工程(光盘目录为:“4,程序源码\标准例程-库函数版本\实验 1 跑马灯/USER/ LED.uvproj”), 可以看到我们的实验工程目录:
ALIENTEK 探索者 STM32F407 开发板教程
个 IO,不同设置所对应的模式见表 5.2.5.1 描述。 然后看 OTYPER 寄存器,该寄存器用于控制 GPIOx 的输出类型,该寄存器各位描述见表
5.2.5.2 所示:
表 5.2.5.2 GPIOx OTYPER 寄存器各位描述 该寄存器仅用于输出模式,在输入模式(MODER[1:0]=00/11 时)下不起作用。该寄存器 低 16 位有效,每一个位控制一个 IO 口,复位后,该寄存器值均为 0。 然后看 OSPEEDR 寄存器,该寄存器用于控制 GPIOx 的输出速度,该寄存器各位描述见表 5.2.5.3 所示:
141
STM32F4 开发指南(库函数版)
ALIENTEK 探索者 STM32F407 开发板教程
图 6.1.1 跑马灯实验目录结构 接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。 ① 组 FWLib 下面存放的是 ST 官方提供的固件库函数,每一个源文件 stm32f4xx_ppp.c 都对
表 5.2.5.3 GPIOx OSPEEDR 寄存器各位描述 该寄存器也仅用于输出模式,在输入模式(MODER[1:0]=00/11 时)下不起作用。该寄存 器每 2 个位控制一个 IO 口,复位后,该寄存器值一般为 0。 然后看 PUPDR 寄存器,该寄存器用于控制 GPIOx 的上拉/下拉,该寄存器各位描述见表 5.2.5.4 所示:
前面,我们讲解了 4 个重要的配置寄存器。顾名思义,配置寄存器就是用来配置 GPIO 的 相关模式和状态,接下来我们讲解怎么在库函数初始化 GPIO 的配置。
GPIO 相关的函数和定义分布在固件库文件 stm32f4xx_gpio.c 和头文件 stm32f4xx_gpio.h 文 件中。
在固件库开发中,操作四个配置寄存器初始化 GPIO 是通过 GPIO 初始化函数完成: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 这个函数有两个参数,第一个参数是用来指定需要初始化的 GPIO 对应的 GPIO 组,取值范围 为 GPIOA~GPIOK。第二个参数为初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。 下面我们看看这个结构体的定义。首先我们打开我们光盘的跑马灯实验,然后找到 FWLib 组下 面的 stm32f4xx_gpio.c 文件,定位到 GPIO_Init 函数体处,双击入口参数类型 GPIO_InitTypeDef 后右键选择“Go to definition of …”可以查看结构体的定义: typedef struct {
这样,STM32F4 每组 IO 有 10 个 32 位寄存器控制,其中常用的有 4 个配置寄存器+2 个数 据寄存器+2 个复用功能选择寄存器,共 8 个,如果在使用的时候,每次都直接操作寄存器配置 IO,代码会比较多,也不容易记住,所以我们在讲解寄存器的同时会讲解是用库函数配置 IO 的方法。
同 STM32F1 一样,STM32F4 的 IO 可以由软件配置成如下 8 种模式中的任何一种: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏式复用功能 关于这些模式的介绍及应用场景,我们这里就不详细介绍了,感兴趣的朋友,可以看看这 个帖子了解下:/posts/list/32730.htm 。接下来我们详细介绍 IO 配置常 用的 8 个寄存器: MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。 同时讲解对应的库函数配置方法。 首先看 MODER 寄存器,该寄存器是 GPIO 端口模式控制寄存器,用于控制 GPIOx (STM32F4 最多有 9 组 IO,分别用大写字母表示,即 x=A/B/C/D/E/F/G/H/I,下同)的工作模 式,该寄存器各位描述如表 5.2.5.1 所示:
表 5.2.5.1 GPIOx MODER 寄存器各位描述 该寄存器各位在复位后,一般都是 0(个别不是 0,比如 JTAG 占用的几个 IO 口),也就是 默认条件下一般是输入状态的。每组 IO 下有 16 个 IO 口,该寄存器共 32 位,每 2 个位控制 1
143
STM32F4 开发指南(库函数版)
应一个头文件 stm32f4xx_ppp.h。分组内的文件我们可以根据工程需要添加和删除,但是 一定要注意如果你引入了某个源文件,一定要在头文件 stm32f4xx_conf.h 文件中确保对 应的头文件也已经添加。比如我们跑马灯实验,我们只添加了 5 个源文件,那么对应的 头文件我们必须确保在 stm32f4xx_conf.h 内也包含进来,否则工程会报错。 ② 组 CORE 下面存放的是固件库必须的核心文件和启动文件。这里面的文件用户不需要修 改。大家可以根据自己的芯片型号选择对应的启动文件。 ③ 组 SYSTEM 是 ALIENTEK 提供的共用代码,这些代码的作用和讲解在第五章都有讲解, 大家可以翻过去看下。 ④ 组 HARDWARE 下面存放的是每个实验的外设驱动代码,他的实现是通过调用 FWLib 下面的固件库文件实现的,比如 led.c 里面调用 stm32f4xx_gpio.c 内定义的函数对 led 进 行初始化,这里面的函数是讲解的重点。后面的实验中可以看到会引入多个源文件。 ⑤ 组 USER 下面存放的主要是用户代码。但是 system_stm32f4xx.c 文件用户不需要修改, 同时 stm32f4xx_it.c 里面存放的是中断服务函数,这两个文件的作用在 3.1 节有讲解,大 家可以翻过去看看。Main.c 函数主要存放的是主函数了,这个大家应该很清楚。 工程分组情况我们就讲解到这里,接下来我们就要进入我们跑马灯实验的讲解部分了。这 里需要说明一下,我们在讲解固件库之前会首先对重要寄存器进行一个讲解,这样是为了大家
STM32F4 开发指南(库函数版)
ALIENTEK 探索者 STM32F407 开发板教程
第六章 跑马灯实验
任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了,本章将通过一个经典的 跑马灯程序,带大家开启 STM32F4 之旅,通过本章的学习,你将了解到 STM32F4 的 IO 口作 为输出使用的方法。在本章中,我们将通过代码控制 ALIENTEK 探索者 STM32F4 开发板上的 两个 LED:DS0 和 DS1 交替闪烁,实现类似跑马灯的效果。 本章分为如下四个小节:
uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOSpeed_TypeDef GPIO_Speed; GPIOOType_TypeDef GPIO_OType; GPIOPuPd_TypeDef GPIO_PuPd; }GPIO_InitTypeDef; 下面我们通过一个 GPIO 初始化实例来讲解这个结构体的成员变量的含义。 通过初始化结构体初始化 GPIO 的常用格式是: GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9//GPIOF9 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化 GPIO 上面代码的意思是设置 GPIOF 的第 9 个端口为推挽输出模式,同时速度为 100M,上拉。 从上面初始化代码可以看出,结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来 设置是要初始化哪个或者哪些 IO 口,这个很好理解;第二个成员变量 GPIO_Mode 是用来设置 对应 IO 端口的输出输入端口模式,这个值实际就是配置我们前面讲解的 GPIOx 的 MODER 寄 存器的值。在 MDK 中是通过一个枚举类型定义的,我们只需要选择对应的值即可: typedef enum { GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */ GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */ GPIO_Mode_AF = 0x02, /*!< GPIO Alternate function Mode */ GPIO_Mode_AN = 0x03 /*!< GPIO Analog Mode */ }GPIOMode_TypeDef;
相关文档
最新文档