江科大/江协科技 STM32学习笔记P6

文章目录

  • LED闪烁&LE流水&蜂鸣器
    • 一、操作STM32的GPIO步骤
    • 二、RCC库函数
      • 什么是AHB与APB?
    • 三、GPIO库函数
      • GPIO初始化
      • 选择IO接口工作方式
    • 四、四种方法实现LED闪灯


LED闪烁&LE流水&蜂鸣器

一、操作STM32的GPIO步骤

1、使用RCC开启GPIO的时钟
2、使用GPIO_Init函数初始化GPIO
3、使用输出或输入的函数控制GPIO口

二、RCC库函数

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
//RCC_AHB外设时钟控制
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//RCC_APB2外设时钟控制
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
//RCC_APB1外设时钟控制

什么是AHB与APB?

AHB(Advanced High-performance Bus), 高速总线,用来接高速外设的。APB (Advanced Peripheral Bus) 低速总线,用来接低速外设的。
APB2一般是和AHB同频率,都是72MHz,APB1一般是36MHz。APB2连接的一般是外设中稍微重要的部分,比如GPIO端口,还有一些外设的一号,比如USART1、SPI1、TIM1、TIM8,还接ADC、EXTI、AFIO。其他的2、3、4…外设和DAC、PWR、BKP等次要点的外设都放到APB1。
在这里插入图片描述

三、GPIO库函数

void GPIO_DeInit(GPIO_TypeDef* GPIOx);
//指定的GPIO外设会被复位
void GPIO_AFIODeInit(void);
//指定的AFIO外设会被复位
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
//用结构体的参数来初始化GPIO口
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
//把结构体变量赋一个默认值//四个读取函数
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//四个写入函数
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//把指定端口设置为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//把指定端口设置为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
//根据第三个参数的值设置指定端口,参数是16进制,转换为2进制看设置的高低电平
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
//可以同时对16个端口进行写入

GPIO初始化

GPIO_InitTypeDef GPIO_InitStructure;
//声明结构体,下面引出结构体的所有成员
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
//选择指定引脚的工作方式为推挽输出
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
//选要配置的引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//选输出速度
GPIO_Init(GPIOA,&GPIO_InitStructure);
//执行这一条才算真正写入到GPIO配置寄存器

在初始化GPIO口时,我们声明了一个结构体GPIO_InitStructure,名字与void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);中第二个参数很像,但细看多了“ure”,是咱们自己起的一个名字。

选择IO接口工作方式

GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_AF_PP 复用推挽输出
GPIO_Mode_AF_OD 复用开漏输出

四、四种方法实现LED闪灯

//方法1:
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
delay_us(50000); //延时1秒
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
delay_us(50000); //延时1秒//方法2:
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //取反LED1
delay_ms(500); //延时1秒//方法3:
GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1)
delay_s(1); //延时1秒
GPIO_ResetBits(LEDPORT,LED1); //LED灯都为低电平(0)
delay_s(1); //延时1秒//方法4
GPIO_Write(LEDPORT,0x0001); //直接数值操作将变量值写入LED
delay_s(2); //延时1秒
GPIO_Write(LEDPORT,0x0000); //直接数值操作将变量值写入LED
delay_s(2); //延时1秒

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

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

相关文章

CV Method:YOLOv10 vs YOLOv8

文章目录 前言一、介绍二、YOLOv8 and YOLOv10 Comparison1.模型结构YOLOv8:YOLOv10: 2. 推理和时延3. 检测表现4. 参数利用5. 关键比较 总结 前言 YOLOv10已经开源一段时间了,经过我实际使用测试,也确实性能更好一些&#xff0c…

静态IP地址在网络安全中的角色解析与实测分析

在这个网络边界日益模糊的时代,每一次点击、每一次数据传输都有着安全问题。作为网络安全体系中的基石,静态IP地址的角色显得尤为重要而复杂。今天,我们的测评团队将带您深入剖析静态IP地址在网络安全中的多重角色,并通过两家代理…

JavaScript(16)——定时器-间歇函数

开启定时器 setInterval(函数,间隔时间) 作用:每隔一段时间调用这个函数,时间单位是毫秒 例如:每一秒打印一个hello setInterval(function () { document.write(hello ) }, 1000) 注:如果是具名函数的话不能加小括号&#xf…

【图像标签转换】XML转为TXT图像数据集标签

引言 该脚本用于将包含对象标注的 XML 文件转换为 YOLO(You Only Look Once)对象检测格式的 TXT 文件。脚本读取 XML 文件,提取对象信息,规范化边界框坐标,并将数据写入相应的 TXT 文件。此外,它还生成一个…

做视频混剪都是去哪里找高清素材的?分享10个高清视频素材库

提升视频混剪质感的10个高清素材库推荐 在这个视觉体验至上的时代,视频的视觉质量对吸引观众至关重要。如果你正在寻找高清素材以提升视频混剪作品的层次,那么你来对地方了。今天,我将为你揭秘10个视频混剪达人常用的高清素材库,…

学习笔记-系统框图传递函数公式推导

目录 *待了解 现代控制理论和自动控制理论区别 自动控制系统的组成 信号流图 1、系统框图 1.1、信号线、分支点、相加点 1.2、系统各环节间的连接 1.3、 相加点和分支点的等效移动(比较点、引出点) 2、反馈连接公式推导 2.1、前向通路传递函数…

Windows:批处理脚本学习

目录 一、第一个批处理文件 1. &&和 | | 2. | 和 & 二、变量 1.传参变量%name 2.初始化变量set命令 3.变量的使用 4.局部变量与全局变量 5.使用环境变量 6.扩充变量语法 三、注释REM和 :: 四:函数 1.定义函数 2.…

js 习题 1

文章目录 前言T1T2T3T4T5T6T7T8T9结语 前言 『最孤独的人最亲切,受过伤的人总是笑的最灿烂。』—— 「素媛」 T1 let buf""; process.stdin.on("readable",function(){let chunkprocess.stdin.read();if(chunk){bufchunk.toString();} });pr…

Python3网络爬虫开发实战(2)爬虫基础库

文章目录 一、urllib1. urlparse 实现 URL 的识别和分段2. urlunparse 用于构造 URL3. urljoin 用于两个链接的拼接4. urlencode 将 params 字典序列化为 params 字符串5. parse_qs 和 parse_qsl 用于将 params 字符串反序列化为 params 字典或列表6. quote 和 unquote 对 URL的…

GIS前沿技术

无论是初步接触到GIS的学生,还是对GIS已经有一定的了解的从业者,肯定都非常关心两个问题:GIS有没有发展前景,GIS有哪些应用价值? 关于这两个问题,笔者的答案是GIS作为一门融合了空间数据采集、存储、处理、…

【数据结构】堆,优先级队列

目录 堆堆的性质大根堆的模拟实现接口实现构造方法建堆入堆判满删除判空获取堆顶元素 Java中的PriorityQueue实现的接口构造方法常用方法PriorityQueue注意事项 练习 堆 如果有一个集合K {k0,k1, k2,…,kn-1},把它的…

Listen(sockfd,backlog)监听函数的第二个参数到底是什么?深度解释

listen队列剖析 int listen(int sockfd,int backlog) backlog : 监听套接字队列 对于一个调用监听的套接字,系统会维护给这个套接字两个队列 1. 未完成连接队列 //当客户端发生三次握手的第一次syn包给服务器的时候,服务器就会再未完成队列中创建…

2024第29届郑州全国商品交易会

第29届郑州全国商品交易会 2024第四届餐饮与供应链专题展 邀 请 函郑州全国商品交易会(简称郑交会)是全国大型性经贸活动,一直秉承“政府指导,市场化运作”的模式,自1995年以来已成功举办了二十八届,是国内…

安装caffe-CPU版本并进行训练

目录 前言 0、安装Ubuntu 18.04 版本 输入ls没有反应 ubuntu换源 换源出现的问题 1、安装caffe出现E:Unable to locate package caffe-cpu问题 2、把 code 文件夹下载到 ubuntu 3、在本地使用caffe-CPU,并部署数据标注工具 ATool 问题1 问题2 问题3 命令行…

leedcode-数组-15 最接近的三数之和

原理 1、对数组进行升序排列; 2、定义变量_min,初始值是升序后数组的前3个元素之和,默认当前3个数之和离目标值最近; 3、遍历数组; 4、定义首指针为start,表示当前遍历元素的下一个元素,即i…

URL过滤、DNS过滤和内容过滤的总结

目录 URL过滤 URL和URI URL -- 统一资源定位符 URI --- 统一资源的标识符 URL和URI之间的区别 URL过滤的方式 HTTP协议获取URL的方式 HTTP协议做控制管理的流程 HTTPS协议做控制管理的流程 1,配置SSL的解密功能 2,直接针对加密流量进行过滤 例…

解决 Shiro 重复调用 doGetAuthenticationInfo 导致异常处理错误的问题

遇到一个 Shiro 中反复调用 doGetAuthenticationInfo 导致异常没有被成功处理的问题,经过一些源码调试,发现了问题的所在,只需在继承 BasicHttpAuthenticationFilter 的类中重写 onAccessDenied 方法即可。 文章目录 1.问题环境2.问题描述3.问…

2024-07-23 Unity AI行为树2 —— 项目介绍

文章目录 1 项目介绍2 AI 代码介绍2.1 BTBaseNode / BTControlNode2.2 动作/条件节点2.3 选择 / 顺序节点 3 怪物实现4 其他功能5 UML 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2022.3.32f1c1,实现基…

25.x86游戏实战-理解发包流程

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

【iOS】——Block循环引用

循环引用原因 如果在Block中使用附有_ _strong修饰符的对象类型自动变量,那么当Block从栈复制到堆时,该对象为Block所持有,这样容易引起循环引用。 HPPerson *person [[HPPerson alloc] init];person.block ^{NSLog("person.age--- …