STM32标准库GPIO操作
STM32标准库GPIO操作
STM32任何外围设备的使用都分为两部分:初始化和使用。体现在代码上就是:(1)有一个初始化函数(2)main函数中的使用
1.初始化GPIO
初始化GPIO函数代码:
void GPIOB_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
初始化一个IO口分为三步:使能时钟、赋值结构体参数、使用上一步设置的结构体参数初始化IO口。
下面一步一步的来解析:
(1)使能时钟。
对应上述代码中函数体内第2句。
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);
这里我们初始化的是B口的时钟。
(2)赋值结构体参数。
对应上述代码中函数体的第1句与第3、4、5句。
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
首先定义一个结构体变量,然后把该结构体变量的一些参数设置一下。
这里我们需要用PB10引脚,于是设置GPIO_Pin是Pin10。
需要推挽输出于是设置GPIO_Mode为GPIO_Mode_AF_PP。
需要PB10在高速状态下运行于是设置GPIO_Speed为50MHz。
经过以上的设置我们就把结构体变量GPIO_InitStructure“填充”完成了。
(3)使用上一步设置的结构体参数初始化IO口。
经过上一步我们设置好了我们需要的端口的一些参数,这一步我们就要把这些参数设置到GPIOB上。
GPIO_Init(GPIOB, &GPIO_InitStructure);
该函数有两个参数,第一个是我们要选定的IO口(这里我们选的是PB口系列。其他的有PA、PC、PD、PE等,每个系列都有16个引脚分别是Pin0-Pin15)
第二个参数就是我们上一步中的结构体变量,该变量定义了某个IO口系列的某个具体引脚(这里我们用的是Pin15),定义了引脚模式以及引脚工作频率。
GPIO_Init()函数的作用就是把我们赋值好的结构体变量对应到GPIO口上。
2.main函数中的使用
GPIO_SetBits(GPIOB , GPIO_Pin_15);//设置为高电平
GPIO_ReSetBits(GPIOB , GPIO_Pin_15);//设置为低电平
STM32标准库GPIO操作的更多相关文章
- 单片机stm32零基础入门之--初识STM32 标准库
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Co ...
- STM32 标准库
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Co ...
- 初识STM32标准库
1.CMSIS 标准及库层次关系 CMSIS 标准中最主要的为 CMSIS 核心层,它包括了: STM32标准库可以从官网获得: 在使用库开发时,我们需要把 libraries 目录下的库函数文件添加 ...
- 【转】C++ 标准库值操作迭代器的常见函数
迭代器是C++标准库中的重要组件,特别是在容器内部,没有迭代器,容器也就无所谓存在了. 例如:vector容器简而言之就是3个迭代器 start finish 以及end_of_storage vec ...
- python2.7.13标准库文件目录操作与文件操作
标准库的中文参考文档: http://python.usyiyi.cn/translate/python_278/library/index.html 官方标准库文档:https://docs.pyt ...
- STM32 标准库V3.5启动文件startup_stm32f10xxx.s分析
layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 前言 分析startu ...
- STM32 标准库3.5修改默认外部8M晶振为16M晶振
ST官方标准库V3.5默认的外部晶振频率为8M,实际使用中外部晶振需要修改为16M: 经过实验,修改有效,具体的patch如下: 修改 HSE_VALUE 值 diff --git "a/L ...
- golang中的标准库IO操作
参考链接 输入输出的底层原理 终端其实是一个文件,相关实例如下: os.Stdin:标准输入的文件实例,类型为*File os.Stdout:标准输出的文件实例,类型为*File os.Stderr: ...
- C 标准库 中 操作 字符串 的 代码
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
随机推荐
- ORACLE 本地数据库存储过程 调用远程数据库存储过程
废话少说,直接切入主题 步骤1:建立一个远程数据库的连接服务名 D:\oracle\ora92\network\admin\tnsnames.ora 添加如下代码: SDEC = (DESC ...
- Fiddler抓包使用教程-断点调试
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/62896784 本文出自[赵彦军的博客] Fiddler 里面的断点调试有2种方式. ...
- 新导入的eclipse项目报错,找不到java包,找不到web.xml文件报错。
新导入的项目可能会出现报错,特别是web项目.我这里提供一种解决方法: 1.右击项目,选择“属性” 2.选择 Resource->java build path->libraries 图中 ...
- C#语言中的XmlSerializer类的XmlSerializer.Deserialize (Stream)方法举例详解
包含由指定的 XML 文档反序列化 Stream. 命名空间: System.Xml.Serialization程序集: System.Xml(位于 System.Xml.dll) 注意: 反序 ...
- meta 刷新
<meta http-equiv="refresh" content="5;url=地址" /> 5秒后刷新至URL地址
- python笔记:#007#变量
变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...
- Python的logging日志
日志级别:critical > error > warning > info > debug,notset级别越高打印的日志越少,反之亦然,即debug : 打印全部的日志(n ...
- CSS学习笔记三:自定义单选框,复选框,开关
一点一点学习CCS,这次学习了如何自定义单选框,复选框以及开关. 一.单选框 1.先写好body里面的样式,先写几个框 <body> <div class="radio-1 ...
- Python_语法和界面设计
http://www.runoob.com/python/python-gui-tkinter.html http://www.python-course.eu/python_tkinter.php
- List集合学习总结
1.List接口是Collection的子接口,用于定义线性表数据结构 ,可以将List理解为存放对象的数组,只不过其元素个数可以动态增加或减少. 2.List接口的两个常见的实现类为ArrayLis ...