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) 附加指定长度 ...
随机推荐
- C++:LIB和DLL的区别与使用
共有两种库: 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library. 一种是LIB包含 ...
- Space Golf~物理题目
Description You surely have never heard of this new planet surface exploration scheme, as it is bein ...
- ssh运行环境搭建及测试
一.运行环境 1.Spring环境 Spring是一站式开发框架,在SSH中主要有以下作用,就像一个大管家: 控制反转(Inversion of Control):类不再自己进行类创建,而是交给Spr ...
- require.js配置路径的用法和css的引入
前端开发在近一两年发展的非常快,JavaScript作为主流的开发语言得到了前所未有的热捧.大量的前端框架出现了,这些框架都在尝试着解决一 些前端开发中的共性问题,但是实现又不尽相同.通常一般的前端加 ...
- C#读取shp文件并获取图形保存到sde要素类中(不使用ESRI的类库,纯c#实现)
说明:首先要将sde要素类发布成对应的要素服务,通过对要素服务的操作,实现数据在sde要素类中的增删 //向服务器发出请求 public string getPostData(string postS ...
- 利用百度地图api实现定位
使用百度地图api前需要先获取一个百度地图开放平台的访问应用AK, 获取百度地图开放平台访问应用AK方式:注册百度账号-->申请百度开发者-->获取密匙-->使用相关功能. 注册账号 ...
- 深入理解css3中的线性渐变
css3中的线性渐变 线性渐变公式: background-image: linear-gradient( [ <angle> | <side-or-corner> ]?, & ...
- 终于解决文件格式问题 unix格式
关于这个问题,今天终于找到方法 file-setting下 左侧code style line separator下拉选择unix就可以了 http://www.cnblogs.com/sunfa ...
- display的属性值测试
由于在学习CSS的display的属性值只针对block.inline.inline-block和flex进行过了解,并且自己观察得知列表中li的display属性是list-item,而想要触发BF ...
- Python_sqlite3
import sqlite3 #导入模块 conn = sqlite3.connect('example.db') #连接数据库 c = conn.cursor() #创建表 c.execute('' ...