• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM8怎么做到位带操作

Harriet 2018-10-22 浏览量:1348
STM8如何实现位带操作
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 朋友好,位带操作在STM8里面是不存在的,我们平时学习的位带操作常见于32位微处理器内核架构中,我们通过对位带区和位带别名区的相关映射和配置可以简化GPIO或者寄存器某个功能位的赋值,将复杂的寄存器配置简化为对某一“符号化”地址的简单配置,类似于经典8051中“sbit LED=P1^0”一样的写法,但是STM8是个8位机,本生寄存器数量不太多,GPIO操作也较为简单,只要合理运用DDR,CR1,CR2,ODR和IDR就可以使用了,故而不存在位带概念。若开发者使用IAR环境开发STM8,还会发现IAR中的头文件帮我们做好了GPIO相关寄存器结构体的封装,我们直接写Px_DDR=0xXX就可以对应到某一端口,使用上非常方便。以上是我浮浅的认识,愿能解除朋友的些许疑惑。

    • 发布于 2018-10-24
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 跟stm32类似吧,毕竟都是arm加的内核。原理就是把对应io的输入和输出寄存器的每一个位按照一定的算法映射到了一个寄存器上。算法可以参考芯片手册和原子的位带操作的代码。
    • 发布于2018-10-22
    • 举报
    • 评论 0
    • 1
    • 0

  • 这个是在C语言中的操作的方式不同了,可以使用位运算就可以位操作了
    • 发布于2018-10-22
    • 举报
    • 评论 0
    • 1
    • 0

  • STM8是8位机,STM32是32位机,这和带位运算并没有什么关系,STM8的寄存器都是8位寄存器,这样,当进行带位操作时,寄存器都是按8位来算的,比如,对某一个位置1,可用|=0xXX的方式,0xXX是一个字节的数据(8位)。
    • 发布于2018-10-22
    • 举报
    • 评论 0
    • 1
    • 0

  • STM8里面没有像BSRR这种操作一个GPIO的寄存器,只能是用&=清零某位,1再用|=控制某位的数值,这是唯一的办法。

    • 发布于2018-10-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 位带操作就是C语言里面的方式,置1就是位或1,置0就是位与0
    • 发布于2018-11-04
    • 举报
    • 评论 0
    • 0
    • 0

  • ST里面的位带操作就是直接把你的寄存器地址映射,往你的寄存器里面写数据
    • 发布于2018-11-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM8怎么做到位带操作