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) 附加指定长度 ...
随机推荐
- Find、FindAll、Where的区别
Find.FindAll是一个List<T>的方法,返回一个new List<T>包括符合条件的数据 Where是一个linq方法,适用于任意继承了IEnumerable接口的 ...
- SVN中与资源库同步时报告了错误。1 中的 0 个资源已经同步
SVN中与资源库同步时报告了错误.1 中的 0 个资源已经同步 原因: 文件被lock, 此时再次提交则出错,解决办法就是clean释放锁即可再次提交: 解决方案: 右键项目–>team–> ...
- Fast Paxos
http://blog.csdn.net/chen77716/article/details/7297122 自从Lamport在1998年发表Paxos算法后,对Paxos的各种改进工作就从未停止, ...
- andorid下从相册选取/拍照选取一张相片并剪切
http://www.2cto.com/kf/201401/270144.html 在Android编程中,从相册选取或是拍照选取一张照片然后对其进行剪切的需求非常的多 之前的一篇文章只说到如何从相册 ...
- java使用Myeclipse创建Hibernate项目碰到的诸多问题总结
这两天一直在搞Myeclipse创建Hibernate的1对多映射. 由于缺乏经验,可算是把我坑惨了.控制台是不停地报错啊~~~~我差点就崩溃了. 1.看的是慕课网的Hibernate一对多映射教程, ...
- SpringBoot框架Scheduled注入参数说明
注解 @Scheduled(cron = "0/5 * * * * ?") @Scheduled(fixedDelay = 1000 * 7,initialDelay=1000*1 ...
- htmlparser 学习
htmlparser 学习系列 htmlparser 使用法使用与详解
- 0513JS数组遍历、内置方法、训练
一.定义一个数组把其中的偶数取出,组成一个新的数组 var attr = [9,34,80,27,56]; var attr1 = []; for(var i in attr){ if(attr[i] ...
- 百度搜索(jsonp)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>百 ...
- 关于Linux虚拟化技术KVM的科普 科普四(From humjb_1983)
另一组关于KVM的分析文档,虚拟化相关概念.KVM基本原理和架构一-概念和术语.KVM基本原理和架构二-基本原理.KVM基本原理及架构三-CPU虚拟化.KVM基本原理及架构四-内存虚拟化.KVM基本原 ...