ARM GPIO接口置位方法

发布者:TranquilSoul最新更新时间:2018-07-22 来源: eefocus关键字:ARM  GPIO接口  置位方法 手机看文章 扫描二维码
随时随地手机看文章

如下面的代码,为啥把端口SDA付给SDA就是置位操作呢?

其实SDA是一个偏移量,它基于GPIO_PORTB_BASE,进行偏移,SDA定义的就是某一个管脚,如

#define SDA 0x20H

这是16进制数,展开为二进制则是0010 0000B,

可见,偏移量0x20H,其实也可以用来置位,因为第六位为1。再看GPIOPinWrite()函数,第三个参数就是SDA的值,要知道,函数赋值,最小都是char类型,一个字节,你无法赋值一个bit,所以,既然这样,就干脆就用偏移量赋值就行了(函数的实现,可能通过&或者|)。

所以,某些ARM编程的书籍上说要把某个GPIO的值赋值给它本身,我当时就很不解,为啥要赋值给它本身?其实就是因为端口对应的寄存器,其实是通过GPIO_PORTB_BASE(基地址)加上偏移量SDA,找到的,刚好,SDA偏移地址的值只有一个bit是置位为1的,可以用来给SDA端口(PORTB的某一个管脚)对应的寄存器置位。

其它端口,如SCL也是这个道理,因为偏移量是固定的,所以SDA置位的值,其实也是固定的。解释时写着SDA=1,实际上,应该是SDA = 0010 0000B(举例,实际值要参考芯片手册)


关键字:ARM  GPIO接口  置位方法 引用地址:ARM GPIO接口置位方法

上一篇:ARM处理器学习之--GPIO操作篇
下一篇:arm地址线的链接方式

推荐阅读最新更新时间:2024-03-16 16:09

Atmel扩展ARM Cortex M0+ MCU组合
新增 SAM D21、D10和D11家族和更加丰富的连接与通信功能,实现面向消费、工业和医疗市场的物联网应用的设计灵活性 全球微控制器(MCU)和触摸解决方案领域的领导者Atmel公司(纳斯达克:ATML)今日宣布推出三个新的产品家族,扩展了其基于 ARM® Cortex® M0+的低功耗MCU产品组合。这些入门级低功耗的MCU产品采用了Atmel的专利技术Event System、SERCOM模块、外设触摸控制器以及全速USB接口,可让设计人员更快地将他们的产品推向市场。 在这个物联网时代,随着越来越多的设备变得更加智能,联网程度越来越高,设计人员正在寻求具备更多连接和通信选项的MCU,用以扩展他们的消费、工业和
[单片机]
ARM4412的MMU内存管理单元
由于在裸板驱动的时候要中断 异常 MMU MMU是一个内存管理单元,在CP15协处理器里面,而CP15处理器是嵌入在ARM芯片里。功能是将虚拟地址映射到物理地址里面。 在使用MMU寄存器机制之前首先要配置寄存器。将寄存器的功能打开 映射的机制支持段模式1M,小段模式,小页模式(更精细) 000000-------1000000 rom的地址 TLB虚拟地址与物理地址缓存的对应关系 页表的产生:假如将4个G的虚拟地址映射到1G的物理地址,假如有100个线程同时使用表,此时,建立的表的大小为: 4G*8*100=3200G。而此时将表放到内存中。。。。。。 但是将虚拟地址映射到物理的地址比如:将3000 0000地址映射到50
[单片机]
解决make:arm-linux-gcc :command not found
1、设置交叉编译工具地址 arm-linux-gcc sudo vi /etc/environment PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin ~ 错误提示: arm-linux-gcc: Command not found 原因: 1)没有在 ~/.bashrc 添加交叉编译工具链bin文件路径 解决方法: 需要sudo vi ~/.bashrc,在最末添加 : exp
[单片机]
ARM9 2440硬件SPI驱动程序-NRF24L01
从开始接触,到驱动编写调试完成,前前后后花费10多天,网上浏览了一下,目前还没有找到硬件SPI控制NRF24L01的驱动程序,绝大多数都是软件SPI,但是软件SPI不好,不稳定,既然都写驱动程序了,肯定要用硬件SPI啦,这样才能学到东西。学习的过程中,通过看韦东山的SPI视频,和参考他写的两个驱动程序。然后花费了四五天,终于将驱动写好了。 这个驱动可以通过ioctl切换接收和发送模式,通过read,write选择接收数据还是发送数据,废话少说,上代码 #include linux/init.h #include linux/fs.h #include linux/slab.h #include linux/module.h #
[单片机]
Arm人工智能生态联盟助力AI产业链发展
   人工智能 是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。近几年, 人工智能 的产业发展速度非常之快,从芯片、云计算到应用层,都取得了不错的成绩, 人工智能 不只是存在于虚拟的世界里,它离我们越来越近。下面就随网络通信小编一起来了解一下相关内容吧。   人工智能是一项难度系数非常高的科学,研究它们也是极富挑战性;同时人工智能涉及的领域也非常之广泛,计算机视觉、机器学习等。不同于以往,人工智能的发展需要更多的企业间合作与突破。目前,很多全球化的企业都在积极布局这个产业,帮助人工智能更快的发展与应用,英国 Arm 公司也是其中的一份子。   作为一家全球知名的半导体知识产权 (IP)
[网络通信]
ARM初学者
1.做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。 2. 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分: 初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader
[单片机]
ARM与TLV5637的模拟SPI接口设计
引 言 SPI(Serial Peripheral Interface)是Motorola公司推出的一种同步串行外围接口。该接口由于协议实现简单,传输速度快等优点,已被广泛应用于EEPROM、 Flash、实时时钟、A/D转换器以及D/A转换器等芯片的读写。本文根据实际工程中的应用需求,用ARM芯片LPC2378的GPIO来模拟SPI接口,以实现对外围SPI接口器件的操作。其中,D/A转换是系统中的一个功能单元,利用GPIO模拟SPI接口的思想和方法,实现对串行D/A芯片 TLV5367的访问,以满足工程要求。 1 SPI串口通信格式 SPI接口协议要求接口设备按主一从方式进行配置,总线上可以连接多个可作为主机的控制器、
[单片机]
<font color='red'>ARM</font>与TLV5637的模拟SPI<font color='red'>接口</font>设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved