历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2018年10月16日 | stm32之位带操作:原理及使用方式

2018-10-16 来源:eefocus

    忽然想起来之前的位带操作还没有放上来,单片机裸机很多时候都是GPIO的操作,当然我们如果使用库函数的话实际没什么差别,不使用位带操作时,可以用库函数GPIO_ReadOutputData()与GPIO_ReadInputData()来读取GPIO的输入输出,但是这个位带操作是个很厉害的发明,下面讲下它的原理以及位带操作有什么优越性。

    这个位带操作是做待机唤醒想起来的,这里有个函数PAin(n),就是读取第几个PA口的数据,程序具体如下

 #define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)

#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 

#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))

    当时忘了位带操作,第一感觉这程序写的跟*一样,哈哈stm32之位带操作:原理及使用方式中间那个一堆与或和移位那里实际是cortex-m3的数据手册中的规定。

stm32之位带操作:原理及使用方式
    位带区在cortex内核中有固定的位置

stm32之位带操作:原理及使用方式
    那么为什么要使用位带操作呢,这个实际是来源于原来51单片机的思想,就是把仅仅1bit表示的输入膨胀为一个存储空间,在数据手册中也有所体现

   stm32之位带操作:原理及使用方式

    一句话概括,就是一个位带区的存储空间存储8bit,而这8bit每一位都会是一个GPIO的输入输出。但是经过位带映射之后一个存储空间就是原来的1bit,由于输入输出只有0和1,因此判断是否非0就可以。

    那么这个位带操作有什么好处呢,和非位带操作读写有什么区别,实际从编程的角度来说没什么区别,就是一个函数的问题,但是从汇编角度,位带操作把“读—改—写”变成了内存的操作,在程序运行上效率更高,下面可以明显看出,汇编运行的步骤更为简洁。

stm32之位带操作:原理及使用方式
    当然了,大部分同学都是直接使用库函数的,这个确实很方便,一般的开发时候直接使用#define的GPIO函数就好,当然,位带操作也必须有所了解,对于提高系统效率有很大的帮助。


推荐阅读

史海拾趣

申风(everanalog)公司的发展小趣事

随着技术实力的不断提升和产品线的日益丰富,申风(everanalog)公司开始积极拓展市场。公司凭借优质的产品和服务,逐渐在国内市场上树立了良好的品牌形象。同时,公司也积极开展国际合作,与国际知名企业建立了战略合作关系,共同推动集成电路产业的发展。这些合作不仅为公司带来了更多的商业机会,也提升了公司在国际市场上的竞争力。

Fenghua (HK) Electronics Ltd公司的发展小趣事

作为一家有社会责任感的企业,Fenghua (HK) Electronics Ltd积极履行社会责任,关注环保和公益事业。公司采用了环保材料和节能技术,降低了生产过程中的能耗和排放。同时,公司积极参与社会公益活动,为当地社区和教育事业做出了积极贡献。这些举措不仅提升了公司的社会形象,也为企业的可持续发展奠定了坚实基础。

请注意,以上故事框架仅供参考,你可以根据Fenghua (HK) Electronics Ltd公司的实际情况和发展历程进行进一步的拓展和完善。

Altitude Technology公司的发展小趣事

随着产品的不断升级和市场的不断扩大,Altitude Technology开始将目光投向海外市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立海外销售渠道等方式,积极推广自己的产品。经过一番努力,Altitude Technology的产品逐渐在国际市场上获得了认可,公司的知名度也得到了提升。

EPSON公司的发展小趣事

EPSON一直注重环保和可持续发展。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,EPSON还致力于研发环保型电子产品,如节能型打印机、环保型投影机等,以减少电子产品对环境的影响。此外,EPSON还积极参与各种环保公益活动,推动电子行业的绿色发展。

Chiefdom Electronic Co Ltd公司的发展小趣事

在市场竞争日益激烈的情况下,Chiefdom Electronic Co Ltd注重创新营销策略,以吸引更多消费者的关注。公司推出了一系列具有针对性的广告宣传活动,利用社交媒体、网络直播等新媒体渠道进行广泛传播。同时,公司还积极参与各类电子展会和论坛,展示其最新技术和产品,与潜在客户建立联系。这些创新营销策略使得公司的品牌知名度和美誉度不断提升,进而带动了销售业绩的稳步增长。

Daniel Woodhead公司的发展小趣事

随着技术的不断进步,Daniel Woodhead公司开始将目光投向更广阔的市场。公司推出了一系列基于自家微处理器的电子产品,如个人计算机、服务器和工作站等。这些产品凭借其出色的性能和稳定性,在市场上获得了良好的口碑。同时,公司还加大了品牌宣传力度,通过赞助科技展会和举办技术研讨会等活动,进一步提升了品牌影响力。

问答坊 | AI 解惑

华为模拟电路

华为模拟电路 经典教材 绝对值得一看…

查看全部问答>

第四届(1999)全国大学生电子设计竞赛获奖作品

本帖最后由 paulhyde 于 2014-9-15 09:34 编辑 第四届(1999)全国大学生电子设计竞赛获奖作品选编  …

查看全部问答>

高速14层板sch和brd文件下载

xilinx的fpga开发板PCB和原理图下载 原理图(Viewdraw): PCB(Allegro 15.x):…

查看全部问答>

全国电子专业人才设计与技能大赛

本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 一、 大赛项目 “天华杯”嵌入式系统设计与开发大赛(专业组) “天华杯”嵌入式系统设计与开发大赛(大学组) “天华杯”单片机设计与开发大赛(大学组) “众友杯”电 ...…

查看全部问答>

基于ARM/Linux的嵌人式设备远程调试模块设计

嵌入式/Linux/ARM/DSP/FPGA......海量资源下载,不断更新, 海科资源 http://www.haike-source.com/ 0 引 言   目前,大多数的工业设备都有专用的调试接口和调试软件,这种方式能有效解决系统现场调试和维护升级的问题,但也有一些弊端。首先, ...…

查看全部问答>

Windows CE 6.0 无法创建 MediaPlayer COM 对象

大家好! 用VB.Net 2008 + CF3.5 开发了一个简单(无播放界面)的mp3/wma/wav播放器,播放程序在WinCE 6.0及Mobile 6.0的机器上使用, 在工程项目中引用了这个wmp.dll COM组件,编译后的程序在Mobile 6.0的机器上运行无问题,播放音乐也一切正常 ...…

查看全部问答>

nandflash的坏块处理

那位有nandflash的坏块处理方法,说下.…

查看全部问答>

H.264解码器的verilog 代码

本人现在正在研究H.264解码器的verilog 代码,源代码是从网上下的qcif分辨率,baseline的解码器,csnd中已经有人上传过,我现在要把解码器改成cif分辨率,把代码修改之后只能解码一部分数据,其他都是不定态,哪位高手也是研究这方面的,能给指点一 ...…

查看全部问答>

高清监控清晰原理

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 传统的高清监控分为模拟、数字和网络三种类型。模拟监控的前端是模拟摄像机,后端是矩阵。数字监控的前端也是模拟摄像机,后端是DVR。 高清监控清晰原理 对于视频监控而言,图像清晰度无疑是 ...…

查看全部问答>

MAXIM驱动芯片使用心得

        一、充电保护芯片MAX846使用 MAX8 4 6 A的工作原理如下 :  低压差线性稳压器的输 出端 ( VL) 电压始终为 内部基准 电压的 2倍 , 因此 , VL端可跟踪基准电压。同时可为外部负载提供 2 0 mA的 ...…

查看全部问答>