STM32F103实现点灯(固件库方式)

参考:stm32上实现点灯
作者:SKY丶丿平才
发布时间: 2021-03-20 16:51:06
网址:https://blog.csdn.net/weixin_48264057/article/details/115028724

目录

  • 前言
  • 一、硬件设计
  • 二、软件设计
    • 1.建立工程
    • 2.代码编写
  • 三、实际验证
    • 1.烧写程序
    • 2.实际功能验证
  • 总结

前言

其实和寄存器点灯是一样的,只不过库函数将寄存器都封装在结构体里面了,我们只需调用这些结构体就好了。

本篇博文将要介绍的是控制ALIENTEK (正点原子)探索者STM32F4 开发板上的两个 LED 实现一个类似跑马灯的效果,该实验的关键在于如何控制 STM32F4 的 IO 口输出。了解了 STM32F4 的 IO 口如何输出的,就可以实现跑马灯了。通过这一章的学习,你将初步掌握 STM32F4 基本 IO 口的使用,而这是迈向 STM32F4 的第一步。

一、硬件设计

本次实验用到的硬件只有 LED(DS0 和 DS1)。其电路在 ALIENTEK 探索者 STM32F4 开发板上默认是已经连接好了的。DS0 接 PF9,DS1 接 PF10。所以在硬件上不需要动任何东西。其连接原理图如下图:
在这里插入图片描述

二、软件设计

下面展示的是代码的编写,具体结构体里面的函数寻找过程,参照这篇博文:STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结,在库函数点灯部分有专门讲解。

1.建立工程

这是江江的视频教程:
在USER文件夹下创建LED文件夹,文件夹内创建 led.c 和 led.h 文件,然后通过 keil 将 led.c 添加到项目工程,编译一下,led.h自动包含进来了。在这里插入图片描述
led.h
在这里插入图片描述
led.c
在这里插入图片描述
main.c
在这里插入图片描述

在keil5中建立好如下图所示的工程:

在这里插入图片描述

2.代码编写

我们需要在三个文件中编写代码,其他添加进去的文件都是固件库自带得,这里我们使用调库的方式来实现点灯。

首先是在led.c文件中,这是我们的点灯文件,主要是定义一个初始化函数

led.c

#include "led.h" void LED_Init(void){    GPIO_InitTypeDef  GPIO_InitStructure;//结构体定义要在时钟之前   通过“.”访问结构图内部成员变量//1、使能APB2的时钟GPIC(视频课程中)RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟//2、结构体配置//GPIOF9,F10初始化设置  视频课程中就配置了前三个结构体成员变量 没指定上拉GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO口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);//初始化GPIOGPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIO电平拉高函数  GPIOF9,F10设置高,灯灭}

随后是led.h文件,这里要对定义的函数做声明以及定义好两个io口

led.h

#ifndef __LED_H
#define __LED_H  //这两步骤  条件编译#include "sys.h"
//include "stm32f10x.h"  视频课程中用的板子包含这个头文件//LED端口定义 这两个分别是GPIO电平拉低拉高函数,视频课程中没有这一步。
#define GPIO_ResetBits(GPIOF,GPIO_Pin_9)	
#define GPOO_SetBits(GPIOF,GPIO_Pin_10)	void LED_Init(void);//初始化  先声明,然后在.C文件中实现	 				    
#endif

最后再编写main.c文件

main.c

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"int main(void){ delay_init(168);		  //初始化延时函数LED_Init();		        //初始化LED端口/**下面是通过直接操作库函数的方式实现IO控制**/	while(1){GPIO_ResetBits(GPIOF,GPIO_Pin_9);  //LED0对应引脚GPIOF.9拉低GPIO_SetBits(GPIOF,GPIO_Pin_10);   //LED1对应引脚GPIOF.10拉高delay_ms(500);  		   //延时300msGPIO_SetBits(GPIOF,GPIO_Pin_9);	   //LED0对应引脚GPIOF.0拉高GPIO_ResetBits(GPIOF,GPIO_Pin_10); //LED1对应引脚GPIOF.10拉低delay_ms(500);                     //延时300ms}}

三、实际验证

1.烧写程序

在FlyMcu软件中利用串口将编译好的程序烧写进去
在这里插入图片描述

2.实际功能验证

在这里插入图片描述
烧写进板子的程序开始运行,实现了跑马灯功能

总结

这个跑马灯的实验主要是介绍了对于32IO口的使用,虽然内容上比较简单,也是通过调库的方式来实现的,但还是能给我们很多有用得启发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)

参考:stm32的外部中断 震动感应 控制 继电器 作者:点灯小哥 发布时间: 2021-03-05 22:37:01 网址:https://blog.csdn.net/weixin_46016743/article/details/114417161 参考:STM32震动感应灯 作者:一只小阿大…

结构体与共用体(联合体)

参考:结构体与共用体 作者:一只青木呀 发布时间: 2020-08-09 08:29:22 网址:https://blog.csdn.net/weixin_45309916/article/details/107889394 参考:联合体(union)的使用方法及其本质 作者&am…

STM32串口原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯、接收不定长数据

参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46016743/article/details/114458698 目录串口相关知识定义通信概念1.通讯结构2.电平标准3…

STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值

参考:stm32定时器与定时器中断 作者:打酱油的 发布时间: 2021-04-11 01:04:09 网址:https://blog.csdn.net/weixin_46098612/article/details/115493737 参考:stm32通用定时器结构体函数定时器实现led闪烁 作者&#x…

关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。

关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。 楼主在公司接手了一段代码。编译的时候发现一个很奇怪的问题,就是获取最新代码的时候能编译通过,然后下次就编译不通过了,提示如下错误。 后来发现问题出在std…

STM32端口复用和端口重映射

参考:stm32 端口复用和重映射 作者:点灯小哥 发布时间: 2021-03-09 13:49:19 网址:https://blog.csdn.net/weixin_46016743/article/details/114581032 目录端口复用1.什么是端口复用2. 如何配置端口复用(以PA9、PA10串口为例)端口…

Scala学习:Curry化的函数

2019独角兽企业重金招聘Python工程师标准>>> 在第1章,我们说过Scala允许你创建新的“感觉像是原生语言支持”的控制抽象。尽管到目前你已经看到的例子都的确是控制抽象,不过任何人都不会 误以为它们是原生语言支持的。为了搞明白如何让控制抽…

js 获取session_Python实战案例:这是你见过的最详细的JS加密登录某博

0x00 抓包分析简单的搜索之后发现,很多参数都是登陆上面这个请求返回的值,这个请求在输入完账号光标到达密码框时就会生成!0x01 加密逻辑分析搜索su可以很快找到加密的位置,上图看到e.su和e.sp都是由sinaSSOEncoder这个函数生成的&#xff0c…

STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值

参考:stm32 定时器输出PWM原理及工作原理控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_46016743/article/details/114606662 参考:stm32之pwm输出 作者:打酱油…

STM32系统定时器SysTick(只能向下递减)延时闪烁灯

参考:stm32 系统定时器 SysTick 作者:点灯小哥 发布时间: 2021-03-10 13:46:00 网址:https://blog.csdn.net/weixin_46016743/article/details/114633245 参考:stm32之系统定时器 作者:打酱油的&#xff1b…

WMS学习笔记:1.尝试加载WMS

1.首先找一个可用的WMS栅格地图服务:http://demo.cubewerx.com/demo/cubeserv/cubeserv.cgi 获取GetCapabilities: http://demo.cubewerx.com/demo/cubeserv/cubeserv.cgi?serviceWMS&requestGetCapabilities 2.在ArcGIS中添加GIS空间服务 2.在ArcC…

mysqli 扩展_MySQLi的优势

1. 功能增加了2,效率大大增加(以后的PHP项目改成mysqli)3,更稳定mysqli使用面向对象技术,但也支持过程化的使用方式mysqli扩展中给我提供了三个类:1. mysqli和连接有关的类2. mysqli_result表达了对数据库的查询所返回的结果集。 …

STM32F4开发板硬件简介

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

演示:EIGRP非等价负载均衡(故障分析与解决篇)

演示:EIGRP非等价负载均衡的故障分析与排除故障背景:在如下图14.20所示的网络环境,工程师完成了环境中所有路由器的接口地址配置有EIGRP动态路由协议的启动,目前每台EIGRP路由器邻居关系正常,路由学习正常,…

STM32超声波模块测距串口输出/通用定时器中断并输出PWM控制舵机/系统定时器延时

参考:stm32 超声波模块 原理 实现测距 舵机使用 作者:点灯小哥 发布时间: 2021-03-10 19:37:16 网址:https://blog.csdn.net/weixin_46016743/article/details/114643703 目录效果展示超声波传感器原理超声波测距编程步骤代码编写…

STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置

摘自:STM32F103五分钟入门系列(二)GPIO的七大寄存器GPIOx_LCKR作用和配置 作者:自信且爱笑‘ 发布时间: 2021-05-01 12:08:32 网址:https://blog.csdn.net/Curnane0_0/article/details/116276876?spm1001.…

STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、图像(硬件IIC)

参考:基于STM32-Oled(IIC)的使用 作者:奋斗的小殷 发布时间: 2021-05-07 13:09:26 网址:https://blog.csdn.net/boybs/article/details/116465668 目录IIC总线简介IIC协议简介IIC总线系统结构IIC总线物理层…

推送公司今日菜单内容到手机

此文已由作者张耕源授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。自从公司的易信公众服务号有了查询今日菜单的功能,自己慢慢养成了每次去吃饭前查一 下各个窗口的菜谱,再决定去哪吃饭的习惯。不过这个功能使用的越…

Android开发中如何创建自定义对话框

背景: 无论是Android,还是其他什么平台,对话框的主要形式都是弹出,或者我们可以说是一个在当前活动中打开的提示,来执行一些操作或实现一些功能。 你可以用一个对话框来问用户以确认一个行动,向用户通告一个…

树莓派接入公网(花生壳)

参考:树莓派接入公网 作者:图触靓 发布时间: 2020-12-22 17:28:19 网址:https://blog.csdn.net/bhbhhyg/article/details/107994829 目录为什么要接入公网接入公网的方法(花生壳)1、下载工具huashenke2、安…