学习一个新的开发板的第一步肯定是学习流水灯的过程,资料提供了两个版本的代码,一个是寄存器版本的,一个是库函数版本的。根据网上一些资料和自己的理解,考虑到后期整个系统复杂性,决定采用库函数版本开发,后期在应用的过程中了解相关寄存器,作进一步学习。
以下是流水灯设置部分代码。
RCC_AHB1PeriphClockCmd(RCC_GPIO_LED, ENABLE);
GPIO_InitStructure.GPIO_Pin =  DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    GPIO_Init(GPIO_LED, &GPIO_InitStructure);
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);
首先是允许IO口的时钟,然后是配置IO口相关寄存器的值,此处提供了一个结构体,结构体如下:typedef struct
{uint32_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured.This parameter can be any value of @ref GPIO_pins_define */

/!< Specifies the operating mode for the selected pins.This parameter can be a value of @ref GPIOMode_TypeDef /

GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins. This parameter can be a value of @ref GPIOSpeed_TypeDef */GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.This parameter can be a value of @ref GPIOOType_TypeDef */GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.This parameter can be a value of @ref GPIOPuPd_TypeDef */

}GPIO_InitTypeDef;

结构体成员根据库函数提供的解释,还是比较容易理解的。

对于处理器的IO操作,无外乎一下两种:
1、数据输出
2、数据输入
不管是哪一种,首先是应该对相关部分进行初始化:
__GPIOG_CLK_ENABLE(); 管脚时钟初始化;
GPIO_InitStruct.Pin = (GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5 );
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;

HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
以上部分是设置G口的2、4、5引脚为输出。
HAL_GPIO_WritePin( GPIOG, GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_PIN_SET); 输出引脚置高
HAL_GPIO_WritePin( GPIOG, GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5, GPIO_PIN_RESET); 输出引脚复位
同理可以进行其他设置。

STM32F207ZG GPIO口学习相关推荐

  1. 启明云端分享|ESP32学习笔记参考GPIO口操作

    提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考.同时也用 ...

  2. STM8单片机GPIO口的驱动深度解析

    上一节给大家介绍了STM8标准库的移植,本节课开始学习我们单片机的外设的驱动,单片机基本的外设资料包括GPIO.外部中断.定时器.串口等,本节先给大家介绍一下STM8单片机的GPIO口. 我们先不介绍 ...

  3. 写一个公用的gpio口驱动

    因为项目需要控制的GPIO口比较多,如果每个GPIO口都写一个驱动就显得比骄麻烦,所以就写了一个通用的GPIO口驱动.只要dts里面配置好设备GPIO相关信息就可以自动加载了.可以很充分的体现多个设备 ...

  4. GPIO口,232串口,USB接口,485接口等接口保护电路

    系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言 一.GP ...

  5. k60的GPIO口配置

    写一下自己在智能车比赛学习到的一些东西吧,有点零散,趁此机会进行梳理一下,内容不是很深. 在智能车中用到GPIO口的地方有按键引脚.拨码开关引脚.舵机.摄像头数据口.场信号口.PLCK信号口等,而电感 ...

  6. 小熊派回顾:学习GPIO,学习ADC

    目录 GPIO GPIO API介绍 wifiiot_gpio.h接口 wifiiot_gpio_ex.h接口 查看LED对应的GPIO引脚 操作GPIO点亮LED 编写业务代码 编译 烧录 读取GP ...

  7. 【msm8953】带clk的gpio口模拟pwm

    1.选择带有clk功能的gpio33作为pwm模拟口: 2.配置设备树 ① 在msm8953-pinctrl.dtsi添加: 位置:kernel/msm-3.18/arch/arm64/boot/dt ...

  8. NVIDIA Jetson Nano GPIO口和通信协议简单介绍及点亮第一个程序LED灯闪烁

    在前面的文章中,我已经想大家介绍了NVIDIA Jetson Nano这个板子.今天我将给大家介绍NVIDIA Jetson Nano最重要的一个接口–GPIO.Jetson Nano 和树莓派一样作 ...

  9. 【STM32】Cortex_M4 GPIO口概述知识总结

    一.GPIO概述 1.什么是GPIO口? GPIO口:简单而言,就是芯片用来控制或者采集外部器件的相关信息,这个又可以称之为输入输出的端口. 2.GPIO有什么作用? 是芯片用来感知外部世界并且用来控 ...

最新文章

  1. Access自动编号 违反并发性原因解析
  2. 【转】mysql多台服务器数据同步
  3. angularJS--多个控制器之间的数据共享
  4. 数据库---闭包习题
  5. 最小总代价(洛谷-U17433)
  6. Spring实战-雇员薪资管理系统
  7. [转帖]成为合格系统管理员的标准
  8. 苹果亮度自动调节怎么关闭_iPhone 总是自动亮屏,该怎么关闭?
  9. 浙江省计算机二级理论知识,2020年浙江省高校计算机二级MS Office考试大纲
  10. 高德地图热力图,高德自带热力图heatmap
  11. 最大子段和C语言实现
  12. Banner大小之国际标准
  13. 企业风险管理与内部控制常见问题与思考
  14. centos7升级python,yum出现问题“ImportError: No module named urlgrabber.grabber”
  15. Oracle loap函数,oracle loap函数用法
  16. 计算机网络与无线通信系统学习1:计算机通信网概述
  17. 多个vue项目合并成一个_零基础搭建一个Vue项目,你学会了吗?
  18. GCN:图卷积神经网络
  19. 蓝桥杯 ADV-287 算法提高 Monday-Saturday质因子
  20. UTF8中文编码范围

热门文章

  1. 人人自媒体的时代,程序员该如何利用好自己的优势?我记住了这些神器...
  2. 【解决】Python程序运行时所占内存越来越大
  3. 在Linux环境下怎么编译Android源码?
  4. 卡拉OK,想唱你就唱,想跳你就跳!
  5. python代码怎么换行继续写_python代码太长怎么换行
  6. IOS 后台执行 播放音乐
  7. jdk+apache+jboss+mod_jk+openssl--从零开始搭建Linux测试环境
  8. jdk+apache+jboss +mod_jk+openssl--从零开始搭建Linux测试环境
  9. Java异步--CompletableFuture--实例
  10. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)