STM32 LED编程 GPIO的初始化(标准库)

实验的电路图介绍
在这里插入图片描述
实验的电路图类似于开漏接法 要初始化GPIOC接口
标准库的模板
在这里插入图片描述
GPIO的标准库编程接口
在这里插入图片描述
GPIO引脚的初始化
在这里插入图片描述
GPIO作为片上外设 每一个片上外设使用前一定要使能时钟 为什么要使能时钟?时钟是啥

时钟的使能

在这里插入图片描述
stm32的每一个片上外设都是时序电路 时序电路在使用前都要进行时钟使能 通过调用图片中圈起来的函数进行时钟初始化 第一个参数为初始化的GPIO口 绿色的字 如要初始化GPIOC第一个参数就输入RCC_APB2Periph 第二个参数就输出 ENABLE即可完成时钟的初始化 开启gpioc的时钟

GPIO_Init的初始化

在这里插入图片描述
第一个参数写你要初始化端口 以GPIOC P13为例子 第一个参数就写GPIOC
第二个参数是一个结构体指针(第一个也是)就像填表一样 把每一行填入值就可以初始化这个io引脚 第一个是引脚号 为13 第二个为模式输出开漏 上面有说为什么是开漏模式
第三个是gpio的速度 led对速度的要求不高 这里就低速即可
在这里插入图片描述
第一步在主函数声明一个初始化GPIO的结构体 然后再填表一样把每个结构体的值填入
引脚为GPIOC P13 输出开漏模式 速度为2MHZ 再调用GPIO初始化函数 传入GPIOC和刚刚定义的结构体变量的地址 GPIOInitstruct
如果一个新手不知道结构体内填入什么值 打开文件 gpio.h的文件 滑倒函数的底部找到初始化函数Init 在main中敲入函数发现函数需要两个参数

在这里插入图片描述
分别输入第一个参数在这里插入图片描述
发现第二个参数是一个结构体 回到gpio.h 把结构体的名称给复制下来
在这里插入图片描述
然后声明一个结构体 名字就是你刚才复制的那个 然后给这个结构体填值 那到底填什么值呢? 注意要先编译一遍!!!!
在这里插入图片描述
找到这个结构体在这里插入图片描述
在这里插入图片描述

找到这个结构体成员可填的值 选中这个值 按住ctri+f 查找这个值
在这里插入图片描述
圈起来的就是可以填入的值 其他的MODE 和Speed都是如此可找到填入值
在这里插入图片描述
在这里插入图片描述

ODR的写入和读取

#include "stm32f10x.h"
#include "stm32f10x_pal.h"int main(void)
{GPIO_InitTypeDef GPIOInitstruct;PAL_Init();RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_13;GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_OD;GPIOInitstruct.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOC,&GPIOInitstruct);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);//Bit_SET 1 熄灭GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//Bit_RESET 0 灯亮起while(1){}
} 

在这里插入图片描述

IDR的写入和读取

在这里插入图片描述

IO的翻转

在这里插入图片描述
标准库没有延时函数的接口 得调用PAL库

#include "stm32f10x.h"
#include "stm32f10x_pal.h"int main(void)
{GPIO_InitTypeDef GPIOInitstruct;PAL_Init();RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_13;GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_OD;GPIOInitstruct.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOC,&GPIOInitstruct);while(1){GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);//Bit_SET 1 熄灭PAL_Delay(500);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//Bit_RESET 0 灯亮起PAL_Delay(500);//让灯延时闪烁}
} 

翻转
在这里插入图片描述

#include "stm32f10x.h"
#include "stm32f10x_pal.h"int main(void)
{GPIO_InitTypeDef GPIOInitstruct;PAL_Init();RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIOInitstruct.GPIO_Pin = GPIO_Pin_13;GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_OD;GPIOInitstruct.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOC,&GPIOInitstruct);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//先让这个led点亮while(1){PAL_Delay(100);if(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)==Bit_RESET){GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);}else{GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);}}
} 

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

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

相关文章

go单元格测试

编写单元测试(Unit Test)是一种测试方法,用于验证代码中的单个功能单元(通常是函数或方法)是否按照预期工作。以下是编写单元测试的一般步骤: 1. 创建测试文件:在项目的测试目录中创建一个新的…

人类为什么要发明微积分?用Python实现微积分

很久很久以前,在一个宁静的小村庄中,住着一位名叫牛顿的年轻学者。牛顿对于周围的一切都充满好奇心,他喜欢仰望星空、观察植物生长,并经常思考自然界中的各种奥秘。 有一天,当他坐在庄园的苹果树下阅读书籍时&#xf…

如何改变Wi-Fi的IP地址,提高网络连接稳定性和速度

Wi-Fi已经成为我们日常生活中必不可少的一部分。大多数家庭和办公室都依赖于Wi-Fi来连接网络和进行各种在线活动。然而,有时我们可能会遇到网络连接不稳定或速度较慢的问题。这可能是由于IP地址的设置不当所导致的。虎观代理小二二将向您介绍如何改变Wi-Fi的IP地址&…

多数据源切换

多数据源切换 jdbcTemplate二级目录三级目录 jdbcTemplate使用切面mybatis层次的多数据源spring的dynamic自动注入 jdbcTemplate 二级目录 三级目录 项目中经常会有多个数据源,那么如何处理呢 有4种方法 准备: 创建两个数据库 CREATE SCHEMA test DE…

Django中如何创建表关系,请求生命周期流程图

Django中ORM创建表关系 如何创建表关系(一对一 , 一对多 , 多对多) 图书表,出版社表,作者表,作者详情表 换位思考法判断表关系 图书表和出版社表 >>> 一对多 >>> 图书表是多,出…

GCC工具详解【Linux知识贩卖机】

很多人在喧嚣声中登场,也有少数人在静默中退出。 --单独中的洞见2 文章目录 简介程序到可执行文件链接动态链接和静态链接动态库和静态库动态库和静态库的打包打包静态库打包动态库选项 -static 总结 简介 GCC(GNU Compiler Collection) 是一…

计算机中丢失mfc140u.dll怎么解决

mfc140u.dll是一个Microsoft Visual C库文件,主要用于MFC(Microsoft Foundation Class)应用程序的开发。它包含了MFC应用程序所需的一些常用功能,如对话框、窗口、菜单等。当mfc140u.dll丢失时,可能会导致MFC应用程序无…

思科9300交换机使用USB进行升级ISO

一、下载ISO 一、网址 Software Download - Cisco Systems 二、找到型号 四、选择XE 软件 五、进行下载 二、COPY 进 U盘 一、、请注意!如果你的U盘不是Fat32文件格式则交换机读取不了,请先格式化再复制文件。 二、下载后将 bin文件复制到U盘。 1.扩展…

力扣labuladong——一刷day28

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣380. O(1) 时间插入、删除和获取随机元素二、力扣710. 黑名单中的随机数 前言 常数时间删除-查找数组中的任意元素,且随机访问概率一致 如果…

idea Plugins 搜索不到插件

Settings — System Settings — HTTP Proxy,打开HTTP Proxy 页面,设置自动发现代理: 勾选Atuto-detect proxy settings,勾选Automatic proxy configuration URL,输入: https://plugins.jetbrains.com/id…

C语言 判断一个素数能被几个9整除

完整代码&#xff1a; // 判断一个素数能被几个9整除 //就是99...99%n0,n为那个素数 #include<stdio.h>int func(int n){//num是被除数就是99..9,i记录num有多少个9int num0,i0;//死循环while (1){i;numnum*109;//直到整除才跳出循环if (num%n0){//返回值为9的个数retu…

Unity 获取桌面路径的方法

在Unity中&#xff0c;当我们碰到以下一些情况时&#xff0c;可能需要桌面的路径。 1、文件操作&#xff1a;如果我们想在游戏中保存或读取文件到桌面&#xff0c;就可以使用桌面路径来指定文件的位置。 2、调试信息&#xff1a;在开发过程中&#xff0c;我们往往会将一些调试…

【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下

文章目录 前言一.Appium 元素定位1.定位方式种类2.如何定位2.1 id定位2.2 className定位2.3 content-desc 定位2.4 Android Uiautomator定位4.1 text定位4.2 text模糊定位4.3 text正则匹配定位4.4 resourceId定位4.5 resourceId正则匹配定位4.6 className定位4.7 className正则…

No184.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

springMVC 导出Excel ,并提供下载(处理日期格式问题)

目录 1、POI的三个依赖 2、控制层代码 3、业务层代码 4、参考文献&#xff1a; 1、POI的三个依赖 <!-- POI的三个依赖 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</vers…

vim 中批量添加注释

批量注释&#xff1a;Ctrl v 进入块选择模式&#xff0c;然后移动光标选中你要注释的行&#xff0c;再按大写的 I 进入行首插入模式输入注释符号如 // 或 #&#xff0c;输入完毕之后&#xff0c;按两下 ESC&#xff0c;Vim 会自动将你选中的所有行首都加上注释&#xff0c;保存…

适用于初学者的 .NET MAUI

适用于初学者的 .NET MAUI | Microsoft Learn 记录微软Learn中用到的代码。文章比较粗糙&#xff0c;大部分是项目代码粘贴。想详细学习的可到上面的链接学习&#xff0c;代码可以从这里复制后直接运行。 练习中一共有两个页面&#xff1a; 1、MainPage.xaml 用于添加列表中的…

logback.xml文件例子

用于服务器里保存日志文件 1、样例一&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--><property name"LOG_HOME" value"/opt…

No182.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【Unity实战】实现强大通用易扩展的对话系统(附项目源码)

文章目录 先看看实现的最终效果前言素材前期准备工作1. 简单绘制地形2. 绘制对话框3. 配置人物动画4. 实现简单的控制人物移动 控制对话框的显示隐藏定义对话内容实现简单的对话功能逐字打印效果按下按键快速显示文本实现多个NPC配置不同对话扩展TextAsset 读取文档文件实际应用…