4422|5

407

帖子

3

TA的资源

纯净的硅(初级)

楼主
 

关于bit band的一些问题 [复制链接]

首先,我觉得我大概能明白bit band的作用。将一位映射成四个字节,修改这四个字节的低位地址就算是修改这一位。(我觉得一个字节更好!这里不讨论。)
第二,下面是STM32自己的定义,我觉得后面的注释是错误的。
  1. #define FLASH_BASE            ((uint32_t)0x08000000) /*!< FLASH base address in the alias region */
  2. #define SRAM_BASE             ((uint32_t)0x20000000) /*!< SRAM base address in the alias region */
  3. #define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */

  4. #define SRAM_BB_BASE          ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */
  5. #define PERIPH_BB_BASE        ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */
复制代码
按照网上的资料,0x2200 0000和0x4200 0000应当是alias region才对,不知道是不是这样。
第三,我没有在数据手册上找到具体的bit band region和alias region的具体定义地址,那是不是理解为每一款STM32的芯片其实bit band region和alias region的地址是固定的?
对了,我现在在看STM32F103CV的资料!
请大神帮忙解答一下。
此帖出自stm32/stm8论坛

最新回复

感谢楼主的分享和分析,不过我并没有感觉到这段代码有多精妙! 首先这个并不是一个键盘扫描程序,而是一个处理函数,当然非要这么叫也能说的过去,比较这个函数没有涉及键值的处理,也算扫描。其次说这个程序只有三行有点儿标题党的意思了,因为这个显然用的是独立按键,独立按键的读取本来就简单,一句话就完了,下面的处理用的也是C语言的技巧而已,但这个技巧并不代表高的执行效率,也就是这样的简短并没有实际意义,还不如分行写清楚的好。我mei看过华为的一个编程规范,明确建议少用C语言技巧。再一个这个函数本事并没有滤波功能,因此算不上一个完整的键盘扫描函数。通过主函数实现滤波是稍微大一些应用中就不可取了,这个函数的用法优点在于按下按键之后只执行一次规定 操作,同时可以及时(按楼主说的就是20ms)发现按键松开。  详情 回复 发表于 2018-9-13 14:28
点赞 关注
个人签名我在想
我知道什么
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
依次序给你回答:
1.不是修改地址,是修改这个地址里的内容,此内容非0即1
2.alias region是指PERIPH_BASE的名称吧,个人理解
3.数据手册上只有一小段,看不太明白,我也在bbs那个贴上才看懂的。同类型起始地址都一样。


此帖出自stm32/stm8论坛
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

板凳
 
我觉得楼主要理解您提到的一些概念或者地址的问题,应该看看Cortex-M3的内核手册(Page84)和F103的用户手册。其实我还没有认真看,但是我觉得您要的答案在这里面。我提供个思路。楼主看看呢。


用户手册:

此帖出自stm32/stm8论坛
 
 

回复

143

帖子

0

TA的资源

一粒金砂(中级)

4
 
建议可以看看原子关于位带操作,写得也挺详细的,还有例程,建议楼主可以看看。。。。
此帖出自stm32/stm8论坛
 
 
 

回复

407

帖子

3

TA的资源

纯净的硅(初级)

5
 
谢谢大家的回复,我自己根据理解说明一下:
1. 是修改对应地址的内容,这个我能理解。
2. 我是想说官方的注释写错了,把alias region和bit band region写反了。
3. 对于同一类的来说,两个区的地址都是固定的。
对于应用我还是觉得直接 用 |= 和 &=某一位来更简单,不知道大家怎么看?
此帖出自stm32/stm8论坛
 
个人签名我在想
我知道什么
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

6
 
感谢楼主的分享和分析,不过我并没有感觉到这段代码有多精妙! 首先这个并不是一个键盘扫描程序,而是一个处理函数,当然非要这么叫也能说的过去,比较这个函数没有涉及键值的处理,也算扫描。其次说这个程序只有三行有点儿标题党的意思了,因为这个显然用的是独立按键,独立按键的读取本来就简单,一句话就完了,下面的处理用的也是C语言的技巧而已,但这个技巧并不代表高的执行效率,也就是这样的简短并没有实际意义,还不如分行写清楚的好。我mei看过华为的一个编程规范,明确建议少用C语言技巧。再一个这个函数本事并没有滤波功能,因此算不上一个完整的键盘扫描函数。通过主函数实现滤波是稍微大一些应用中就不可取了,这个函数的用法优点在于按下按键之后只执行一次规定 操作,同时可以及时(按楼主说的就是20ms)发现按键松开。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表