使用库函数点亮一个LED灯

软件设计

STM32Gpio的介绍

如果想让LED0点亮,那么R12就要是高电平,LED0就要是低电平,也就是PF9就是低电平

F407系统主频要工作在168MHZ

F103的话是工作在72mhz

F429的话就180MHZ

接着我们就要使能Gpio的时钟,使能之后对GPIO相关的参数,比如说工作模式,管脚输出方向,输出的速度怎么样,最后点亮LED灯

编写的一些外设驱动文件,比如我们的LED,蜂鸣器,LCD,IIC,SPIflash等等

这里放一些驱动程序,比如说串口的程序,以及系统的一些时钟初始化,变量的重定义等等主要是用来调试

保存LED的文件存放在APP/led

头文件

定义我们的管脚,以及我们函数的声明

在public中存放系统时钟文件.C和.h文件

在我们的主函数那里有很多初始化定义时钟的配置,还在关键字的重定义,这样子的主函数就会特别多东西

现在我们先把关键字放在时钟的头文件

把他拷贝进来后,突然发现报错了

因为这些类型都定义在stm32f4xx.h的这个文件中

为什么要写这个格式

首先你要知道如果没有这个格式,我们在led.c和main.c里放这个头文件,

那么当你编译的时候就会发出一个错误,类型重定义

出现这个问题是因为你main.c你又包括led.c你放一个头文件进去,就会被包含两次

怎么解决这个

主要是用ifndef这个预定义符号,这个后面加个定义system_h

是想看看这个有没有被定义,没有的话就执行了下面的程序,

如果定义了就不会走下去,就只包含了一次

接下来包含头文件, 不然就找不到

添加文件到APP那里

看到这个就知道要添加头文件了、

抢占和响应优先级为0到3

GPIO相关函数的使用

这个函数的作用是对端口的时钟进行使能

如果你要关闭的话就失能使用这个函数、、

Gpio初始化函数

这个是端口,就是你想点亮的LED灯所在的端口

初始化结构体的指针

这个就是那个结构体

pin是引脚

mode是模式

pull是上拉或者是下拉

Speed是我们的速度

Alternate是我们复用的功能是一些配置

Gpio功能的配置

想让他初始化为熄灭状态,那么就要上拉,你左边的和右边的电平要一致就不会导通了

输出引脚高低电平的函数,第一个参数是他引脚的端口,第二个是他的引脚,第三个是高低电平

这样子写是可以是因为他们能在同一端口上

因为可能不在一个端口上,所以分开写

这个把上拉和高速删了,因为配置重复了,所以要删除下面的那个

这样写便于移植,这些东西都是放在LED文件下的,如果你到时候换个版,你在这里修改引脚,到时候全部就可以用了,就不用改那么多了

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

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

相关文章

c++----io流

提示:以下 是本篇文章正文内容,下面案例可供参考 1.标准io流 (1)数据的循环输入 对于内置类型:cin和cout直接使用,c已经重载了 (2)对于自定义类型: 需要我们自己对类型进行重载 2.文件io流 ifstream ifile(只输入…

着色器 简介

着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间…

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解 题目传送门 题解 CSP-S1 补全程序,致敬全 A 的答案,和神奇的预言家。 写一下这篇的题解说不定能加 CSP 2024 的 RP 首先看到 k k k 这么大的一个常数,就想到了二分。然后写一个判…

中序遍历二叉树全过程图解

文章目录 中序遍历图解总结拓展:回归与回溯 中序遍历图解 首先看下中序遍历的代码,其接受一个根结点root作为参数,判断根节点是否为nil,不为nil则先递归遍历左子树。 func traversal(root *TreeNode,res *[]int) {if root nil …

ArcGIS核密度分析(栅格处理范围与掩膜分析)

多时候我们在进行栅格分析的时候,处理的结果不能完全覆盖我们需要的范围。 比如,我们对点数据进行密度分析、栅格插值等。比如下图 为什么会如此呢? 那是因为在做这个密度分析或者栅格插值的时候,默认是以点的四至范围来生成的&am…

国内可以使用的ChatGPT服务【9月持续更新】

首先基础知识还是要介绍得~ 一、模型知识: GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI 文档中已经更新了 GPT-4o 的介绍:128k 上下文,训练截止 2023 年 10 月(作为对比,GPT-4…

探索 Web Speech API:实现浏览器语音识别与合成

引言 Web Speech API 是一项由 W3C 开发的 Web 标准,为开发者提供了在 Web 应用程序中实现语音识别和语音合成的能力。通过 Web Speech API,我们可以让网页与用户进行语音交互,实现更加智能化和便捷的用户体验。本文将深入探讨 Web Speech A…

第十二周:机器学习

目录 摘要 Abstract 一、非监督学习 二、word embedding 三、transformer 1、应用 2、encoder 3、decoder 四、各类attention 1、最常见的类别 2、其余种类 3、小结 总结 摘要 本周继续学习机器学习的相关课程,首先了解了监督学习和非监督学习的概…

Flink Task 日志文件隔离

Flink Task 日志文件隔离 任务在启动时会先通过 MdcUtils 启动一个 slf4j 的 MDC 环境,然后将 jobId 添加到 slf4j 的 MDC 容器中,随后任务输出的日志都将附带 joid。 MDC 介绍如下: MDC ( Mapped Diagnostic Contexts ),它是一个…

文件操作和InputStream,OutputStream的用法

“他越拧巴,我越喜欢!” 文件: 此处谈到的文件,本身有很多的含义。 狭义上的文件,特指 硬盘上的文件(以及保存文件的目录)。 广义上的文件,计算机上的很多硬件设备,软…

idea2021git从dev分支合并到主分支master

1、新建分支 新建一个名称为dev的分支,切换到该分支下面,输入新内容 提交代码到dev分支的仓库 2、切换分支 切换到主分支,因为刚刚提交的分支在dev环境,所以master是没有 3、合并分支 点击push,将dev里面的代码合并到…

【Web】御网杯信息安全大赛2024 wp(全)

目录 input_data admin flask 如此多的FLAG 一夜醒来之全国CTF水平提升1000倍😋 input_data 访问./.svn后随便翻一翻拿到flag admin dirsearch扫出来 访问./error看出来是java框架 测出来是/admin;/路由打Spring View Manipulation(Java)的SSTI https:/…

C++容器list底层迭代器的实现逻辑~list相关函数模拟实现

目录 1.两个基本的结构体搭建 2.实现push_back函数 3.关于list现状的分析(对于我们如何实现这个迭代器很重要) 3.1和string,vector的比较 3.2对于list的分析 3.3总结 4.迭代器类的封装 5.list容器里面其他函数的实现 6.个人总结 7.代码附录 1.两…

Selenium with Python学习笔记整理(网课+网站持续更新)

本篇是根据学习网站和网课结合自己做的学习笔记,后续会一边学习一边补齐和整理笔记 官方学习网站在这获取: https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱的博客文章来进行环境配置,具…

Fyne ( go跨平台GUI )中文文档- 架构 (八)完结

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

《深度学习》PyTorch 手写数字识别 案例解析及实现 <下>

目录 一、回顾神经网络框架 1、单层神经网络 2、多层神经网络 二、手写数字识别 1、续接上节课代码,如下所示 2、建立神经网络模型 输出结果: 3、设置训练集 4、设置测试集 5、创建损失函数、优化器 参数解析: 1)para…

ArcGIS10.2/10.6安装包下载与安装(附详细安装步骤)

相信从事地理专业的小伙伴来说,应该对今天的标题不会陌生。Arcgis是一款很常用的地理信息系统软件,主要用于地理数据的采集、管理、分析和展示。目前比较常见的版本有ArcGIS 10.2和ArcGIS 10.6。 不可否认,Arcgis具有强大的地图制作、空间分…

DataGrip在Windows和MacOS平台上的快捷键

0. 背景信息 No.说明1测试DataGrip版本号 : 2024.2.2 1. Windows下快捷键 2. MacOS下快捷键

CentOS Stream 9部署Redis

1、安装Redis sudo dnf install redis 2、启动Redis服务 sudo systemctl start redis 3、设置Redis开机自启 sudo systemctl enable redis 4、打开Redis配置文件: sudo vi /etc/redis/redis.conf 在配置文件中找到并修改以下两行,确保密码验证功能已启…

Docker 容器技术:颠覆传统,重塑软件世界的新势力

一、Docker简介 什么是docker Docker 是一种开源的容器化平台,它可以让开发者将应用程序及其所有的依赖项打包成一个标准化的容器,从而实现快速部署、可移植性和一致性。 从功能角度来看,Docker 主要有以下几个重要特点: 轻量…