第四讲—讲解GPIO_Write函数以及相关例程

这篇具有很好参考价值的文章主要介绍了第四讲—讲解GPIO_Write函数以及相关例程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

之前讲解了初学GPIO的几个函数,下面介绍又一个函数,此函数对所有端口进行操作

GPIO_Write函数,与上一篇里边讲解的其他函数相比,最大的特点是它可以对多个端口进行赋值操作。

先看函数定义:

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  
  GPIOx->ODR = PortVal;
}

第一个参数与之前一样,因为是对多个端口操作,我们以GPIOA的所有端口为例,第一个参数还是GPIOA,重点看第二个参数,看参数定义:

  * @param  PortVal: specifies the value to be written to the port output data register.

它的意思是,指定要写入端口输出数据寄存器的值。

以LED流水灯为例,用该函数我们可以直接配置PA0-PA15 16个端口

直接上代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main()
{
	
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使用RCC开启GPIO时钟
		GPIO_InitTypeDef GPIO_InitStructure;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//把16个端口全部配置为推挽输出 
		//GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 ;//按位“或”选中多个端口
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
		GPIO_Init(GPIOA,&GPIO_InitStructure);
	    //到上边为止,GPIO初始化完成 
	  while(1)

	  {
		
        GPIO_Write(GPIOA,~0X0001);//因为低电平点亮,所以按位取反,此时第一个LED点亮其他为灭			
		//0000 0000 0000 0001  对应PA0-PA15  16个端口,最低位PA0
		Delay_ms(500);
		GPIO_Write(GPIOA,~0X0002);//0000 0000 0000 0010
		Delay_ms(500);
	    GPIO_Write(GPIOA,~0X0004);//0000 0000 0000 0100
		Delay_ms(500);
		GPIO_Write(GPIOA,~0X0008);//0000 0000 0000 1000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0X0010);//0000 0000 0001 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0X0020);//0000 0000 0010 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0X0040);//0000 0000 0100 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0X0080);//0000 0000 1000 0000 
		Delay_ms(500);
       
     }
}

需要注意的是,在GPIO_Init中结构体的Pin要改为全部端口,即为GPIO_Pin_All 。

在死循环中,第二个参数用十六进制数表示,因为我们选择LED为低电平点亮,所以我们按位取反,此时第一个LED点亮其他为灭,按位取反操作依次点亮每个端口上的LED,加入延时即可实现LED流水灯。文章来源地址https://www.toymoban.com/news/detail-595959.html

到了这里,关于第四讲—讲解GPIO_Write函数以及相关例程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux驱动开发】013 与gpio相关的OF函数 一、前言

    在上节,我们提供了驱动中gpio子系统相关的API函数,主要用来申请释放gpio、设置gpio输入输出、获取设置gpio的值。 我们进行上述设置的前提是:在驱动程序中需要读取 gpio 属性内容。为此,Linux 内核提供了几个与 GPIO 有关的 OF 函数。 用于统计设备树某个属性里面定义了几个

    2024年02月14日
    浏览(40)
  • HTTP第四讲——域名和DNS

    IP 协议的职责是“网际互连”,它在 MAC 层之上,使用 IP 地址把 MAC 编号转换成了四位数字,这就对物理网卡的 MAC 地址做了一层抽象,发展出了许多的“新玩法”。 例如,分为 A、B、C、D、E 五种类型,公有地址和私有地址,掩码分割子网等。只要每个小网络在 IP 地址这个概

    2024年02月03日
    浏览(25)
  • 【MySQL 流浪之旅】 第四讲 MySQL 逻辑备份

    【MySQL 流浪之旅】 第一讲 MySQL 安装 【MySQL 流浪之旅】 第二讲 MySQL 基础操作 【MySQL 流浪之旅】 第三讲 MySQL 基本工具 文章目录 系列文章目录 文章目录 一、什么是逻辑备份? 二、 mysqldump原理 三、mysqldump常用参数 四、mysqldump常见问题 mysqldump会导致锁表吗? mysqldump数据导出

    2024年01月23日
    浏览(24)
  • Unity SRP 管线【第四讲:URP 阴影】

    在UniversalRenderer.cs/ line 505行处 此处已经准备好了所有渲染数据(所有数据全部存储在了renderingData中) 我们只用renderingData中的数据初设置mainLightShadows 进入函数 m_MainLightShadowCasterPass.Setup(ref renderingData); 在UniversalRenderer管线创建的时候,我们已经做了创建 我们设置MainLightShado

    2024年02月03日
    浏览(29)
  • 【AWS系列】第四讲:什么是 AWS Serverless

    目录 序言:  1 概念介绍 AWS Serverless  2 组成介绍 2.1 计算 2.1.1  AWS Lambda 2.1.2 AWS Fargate 2.2 应用程序集成 2.2.1  Amazon EventBridge  2.2.2 AWS Step Functions 2.2.3 Amazon Simple Queue Service 2.3.4 Amazon API Gateway 2.3 数据存储 2.3.1 Amazon S3  2.3.2 Amazon DynamoDB 最近需要学习使用到AWS一些内容,整

    2023年04月09日
    浏览(27)
  • 60题学会动态规划系列:动态规划算法第四讲

    买卖股票相关的动态规划题目 文章目录 1. 买卖股票的最佳时机含冷冻期 2. 买卖股票的最佳时期含⼿续费 3. 买卖股票的最佳时机III 4. 买卖股票的最佳时机IV 力扣链接:力扣 给定一个整数数组 prices ,其中第    prices[i]  表示第  i  天的股票价格 。​ 设计一个算法计算出最

    2024年02月13日
    浏览(26)
  • 【数据结构第四讲(排序算法)】我不信教不会你

    大家好啊✨ 先简单介绍一下自己💎 本人目前大二在读,专业是计算机科学与技术。 写博客的目的是督促自己记好每一章节的笔记,同时也希望结交更多同仁,大家互相监督,一起进步!☀️ 👀在这篇博客中,将会进行七种( 直接插入排序,希尔排序,选择排序,堆排序,

    2024年02月11日
    浏览(31)
  • ElasticSearch第四讲:ES详解:ElasticSearch和Kibana安装

    本文是ElasticSearch第四讲:ElasticSearch和Kibana安装,主要介绍ElasticSearch和Kibana的安装。了解完ElasticSearch基础和Elastic Stack生态后,我们便可以开始学习使用ElastiSearch了。 安装ElasticSearch还是先要看下官方网站。 官方网站 官方2.x中文教程中安装教程 官方ElasticSearch下载地址 官方

    2024年02月08日
    浏览(32)
  • 自学SLAM(8)《第四讲:相机模型与非线性优化》作业

    小编研究生的研究方向是视觉SLAM,目前在自学,本篇文章为初学高翔老师课的第四次作业。 现实⽣活中的图像总存在畸变。原则上来说,针孔透视相机应该将三维世界中的直线投影成直线,但是当我们使⽤⼴⾓和鱼眼镜头时,由于畸变的原因,直线在图像⾥看起来是扭曲的

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包