- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32位段区
1. 什么是位段、位带别名区? 2. 它有什么好处? 答1: 是这样的,记得MCS51吗? MCS51就是有位操作,以一位(BIT)为数据对象的操作, ????? MCS51可以简单的将P1口的第2位独立操作: P1.2=0;P1.2=1 ; 就是这样把P1口的第三个脚(BIT2)置0置。 ????? 而现在STM32的位段、位带别名区就为了实现这样的功能。?????? ????? 对象可以是SRAM,I/O外设空间。实现对这些地方的某一位的操作。 ????? 它是这样的。在寻址空间(32位地址是 4GB )另一地方,取个别名区空间,从这地址开始处,每一个字(32BIT) ????? 就对应SRAM或I/O的一位。 ?????? ????? 这样呢,1MB SRAM就 可以有32MB的对应别名区空间,就是1位膨胀到32位(1BIT 变为1个字) ????? 我们对这个别名区空间开始的某一字操作,置0或置1,就等于它映射的SRAM或I/O相应的某地址的某一位的操作。 ?????? 答2:? 简单来说,可以把代码缩小, 速度更快,效率更高,更安全。 ????? 一般操作要6条指令,而使用 位带别名区只要4条指令。??? ????? 一般操作是? 读-改-写? 的方式, 而位带别名区是 写 操作。防止中断对读-改-写? 的方式的影响。 //? STM32支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设 //? 区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区 //? 把每个比特膨胀成一个32 位的字。 // //? 每个比特膨胀成一个32 位的字,就是把? 1M? 扩展为 32M , // //? 于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:(STM32中的SRAM依然是8位的,所以RAM中任一地址对应一个字节内容) //?? 0X220000000 ,0X220000004,0X220000008,0,0X220000010,0X220000014, 0X220000018,0 // 支持位带操作的两个内存区的范围是: // 0x2000_00000x200F_FFFF(SRAM 区中的最低1MB) // 0x4000_00000x400F_FFFF(片上外设区中的最低1MB) /* 对SRAM 位带区的某个比特,记它所在字节地址为A,位序号 在别名区的地址为: AliasAddr= 0+((A0*8+n)*4 =0 (A‐0*32 + n*4 对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0=n=7),则该比特 在别名区的地址为: AliasAddr= 0((A0*8+n)*4 =0 (A‐0*32 + n*4 上式中,“*4”表示一个字为4 个字节,“*8”表示一个字节中有8 个比特。 // 把“位带地址+位序号”转换别名地址宏 #define BITBAND(addr, bitnum) ((addr 0xF0000000)+0x2000000+((addr 0xFFFFF)5)+(bitnum2)) //把该地址转换成一个指针 #define MEM_ADDR(addr)? *((volatile unsigned long? *)(addr)) // MEM_ADDR(BITBAND( (u32)CRCValue,1)) = 0x1; ? 例如点亮LED // 使用STM32库 ?? GPIO_ResetBits(GPIOC, GPIO_Pin_4); //关LED5 ?? GPIO_SetBits(GPIOC, GPIO_Pin_7);?? //开LED2 // 一般读操作 ??? STM32_Gpioc_Regs-bsrr.bit.BR4 =1;// 1:清除对应的ODRy位为0 ??? STM32_Gpioc_Regs-bsrr.bit.BS7 =1;// 1:设置对应的ODRy位为1 //如果使用 位带别名区操作 ? STM32_BB_Gpioc_Regs-BSRR.BR[4] =1;// 1:清除对应的ODRy位为0 ? STM32_BB_Gpioc_Regs-BSRR.BS[7] =1;// 1:设置对应的ODRy位为1
您可能关注的文档
- M5 Unit 2 一轮复习导学案.doc
- 重庆市第110中学校八年级英语上册 Unit 8 How do you make a banana milk shake(第2课时)导学案.doc
- 复合式听力技巧及其高频词汇.doc
- 人教版2016年秋季八年级英语上册《Unit 8 How do you make a banana milk shake》同步练习.doc
- Dewan Bandaraya Kuala Lumpur等介绍.doc
- 爱立信MSC下拨打诺西MSC下正忙用户听不.doc
- 新概念1单词表字母顺序.doc
- 2013刘男5500词汇完美彩色word版讲义.doc
- unit_8_How_do_you_make_a_banana_milk_shake知识归纳.docx
- L800M测试验证过程.docx
文档评论(0)