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.hqwc.cn/news/175277.html

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

相关文章

【Linux网络】1分钟使用shell脚本完成DNS主从解析服务器部署(适用于centos主机)

DNS正向解析主从解析服务器脚本 1、脚本内容 主服务器脚本 #!/bin/bash ##先修改本地DNS缓存服务器 read -p "请输入主服务器ip地址:" masterIP sed -i /DNS/d /etc/sysconfig/network-scripts/ifcfg-ens33 echo "DNS$masterIP" >> /e…

链表面试题

💓作者简介👏:在校大二迷茫大学生 💖个人主页🎉:小李很执着 💗系列专栏:Leetcode经典题 每日分享:其实要过那条马路并不难,就看谁在对面等你❣️❣️❣️ 目录…

error: C3867: “MainWindow::copyFileCallBack”: 非标准语法;请使用 ““

error: C3867: “MainWindow::copyFileCallBack”: 非标准语法;请使用 “&” 这时候我们按照提示将t.testFun前面加上&又会出现error C2276: “&”: 绑定成员函数表达式上的非法操作, 解决 在函数前面加上static声明

ISP 处理流程

#灵感# 摆烂时间太长了,感觉知识忘光光了。重新学习,常学常新。 因为公司文档都不让摘抄、截取,所以内容是工作的一些自己记录和网络内容,不对的欢迎批评指正。 1、ISP概述 ISP是Image Signal Processor 的简称,也就…

nodejs+vue公益帮学网站的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。为确保中国经济的持续发展, 如何用方便快捷的方式使管理者在广阔的数据海洋里面查询、存储、管理和共享有效的数据信息,对我们的学习,工作和生活具有重要的现…

视频推拉流EasyDSS直播点播平台获取指定时间快照的实现方法

视频推拉流直播点播系统EasyDSS平台,可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能,可兼容多操作系统,在直播点播领域具有广泛的场景应用。为了便于用户集成、调用与二次开发。 今天我们来介绍下在…

C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录

目录 一、应用程序设计 二、应用程序源码 三、生成效果 前文作者发布了在.NET Framework4.8 控制台应用中通过EF访问已有数据库,事实上在.NET Framework4.8 Windows窗体应用中通过EF访问已有数据库也是一样的。操作方法基本一样,数据库EF模型和上下文…

STM32 I2C详解

STM32 I2C详解 I2C简介 I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线 两根通信线: SCL(Serial Clock)串行时钟线,使用同步的时序,降低对硬件的依赖,同时同步的时序稳定…

【kafka】windows安装启动

1.zookeeper的安装与启动 快速打开window powershell: windowx,选 2.kafka下载 —注意kafka和zookeeper需要版本匹配 安装路径 注意,kafka安装目录不能有空格。文件下载到: D:\Program_Files\kafka_2.12-3.6.0新建logs文件 修改c…

JavaScript中的原型和原型链

给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:web前端面试题库 原型和原型链是JavaScript中一个重要且常常被误解的概念。它们在理解对象、继承和属性查找时扮演着关键的角色。 1…

基于单片机的农田智能驱鼠装置(论文+源码)

1.系统设计 在基于单片机的农田智能驱鼠装置设计中,分为四个模块电源模块、感应模块、控制模块和音频模块。电源模块为整个系统提供5v的直流电源,支撑驱鼠器的整体运作。热释电红外感应模块用来感应鼠类的入侵。控制模块则采用STC89C52单片机编程进行时…

unity 使用Vuforia扫描实体物体交互

文章目录 前言一、Vuforia是什么?二、Unity导入Vuforia1.去Unity - Windows – Asset Store,搜vuforia engine,添加到我的资源2.从 Unity 的菜单 Assets -> Import package -> Custom Package 导入脚本,添加 Vuforia Engine…