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,一经查实,立即删除!

相关文章

strtus2.3 java.lang.NoSuchFieldException: DEFAULT_PARAM

strtus2.3.15.1 的bug请下载 http://download.csdn.net/detail/livalue/6229373 或加群到群共享中下载.214579879

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

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

mysql 查找课程最高分_mysql 查询 学生id最高分的科目和日期

mysql>select*fromstudent;------------------------------|id|subject|mark|date|------------------------------|24|语文|56|2004-11||32|数学|74|2006-5||24|政治|100|2...mysql> select * from student;------------------------------| id | subject | mark | date…

我的lisp启程

Lisp语言仰慕已久,尤其是其作为人工智能的编程语言,感觉明显比其他语言高端不少,加之同班的同学也要自学lisp,就下定决心趁着在校的时候将lisp掌握。大一的时候接触python,觉得python语言特别难学,因为从来…

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

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

mysql 5.6.10 32_安装mysql-5.6.10-win32 解压版-略有修改

1.复制mysql-5.6.10-win32.zip到D:\app目录下.2.解压mysql-5.6.10-win32.zip3.在D:\app\mysql-5.6.10-win32下,复制“my-default.ini”文件,生成“复件 my-default.ini”文件。将“复件 my-default.ini”文件重命名成“my.ini” 。(注意:如果…

培养自信,笑赢未来

注:本文是儿子幼儿园小班第一个月中,老师要求每个学生家长都要交的命题作文。要求基于当前典型的421家庭中,如何培养孩子的自信心成文。为此,我作为家长第一次向老师提交了这篇作文。自信心对一个人的健康成长至关重要&#xff0c…

mysql中当前时间九点_MySQL 获得当前日期时间(以及时间的转换)

1.1 获得当前日期时间(date time)函数:now()除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:current_timestamp() current_timestamplocaltime() localtimelocaltimestamp() localtimestamp这些日期时间函数,都等…

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

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

mysql kvdb_从MYSQL到KVDB

2016年4月10日 星期日 阴,雾霾惊悉新浪SAE又多收费了,凡是用Mysql的应用,每天至少要交22448颗云豆的租金。新浪为什么经常干这种事呢?用户会不会怀疑哪天又开始另找名目多收云豆?这跟食堂打菜员给人打菜一样&#xff0…

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…

返回json数据

拦截器的配置,导致只能返回boolean类型的数据,那么要让前端知道在哪里被拦截了,拦截了什么,这就要用到json数据,返回相应的数据,package com.sysh.web.interceptor;/** * Created by sjy Cotter on 2018/7/24. */impor…

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…

Maven镜像源

Maven仓库镜像 修改Maven setting.xml文件 在 标签内添加以下镜像。 注意&#xff1a;如果构建错误&#xff0c;请根据错误信息&#xff0c;调整镜像位置 <mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable …

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

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

nzhtl1477-ただいま帰りました ( bfs )

nzhtl1477-ただいま帰りました 题目描述 珂学题意&#xff1a; 你是威廉&#xff01;你要做黄油蛋糕给珂朵莉吃~&#xff01; 68号岛有n个商店&#xff0c;有的商店直接有小路连接&#xff0c;小路的长度都为1 格里克告诉了你哪些地方可能有做黄油蛋糕的原料 但是那个人是个坑货…

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

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