[STM8] 端口设置问题

[复制链接]
3188|12
 楼主| 电星电器 发表于 2011-11-18 14:14 | 显示全部楼层 |阅读模式
请问STM8的寄存器可以直接写位吗?
我常见的都只有这样写的(Px_IDR&0x02)==0;
这样的话会改变整个寄存器的值啊,有没有什么办法只单独写位的指令了 ,怎么个写法求指教
 楼主| 电星电器 发表于 2011-11-18 14:47 | 显示全部楼层
资料上说用BSET  来进行位写操作可是要怎么写啊
香水城 发表于 2011-11-18 15:45 | 显示全部楼层
例如:Px_IDR &= 0x02;
 楼主| 电星电器 发表于 2011-11-18 16:06 | 显示全部楼层
也学是我说的不够详细把 我上述的是一个判断,如果像我上面那么写的话就会影响到整个寄存起啊 现在就是想找到来写位指令的操作方法,香版主和各位大哥可以解决下吗 资料说的太少了 我在网上也没有找到相关的资料,
 楼主| 电星电器 发表于 2011-11-18 16:09 | 显示全部楼层
在一个完整的程序里面是少不了单独的位操作的,资料上只是说了可以用BSET来实现位操作可以是也没说明就是一句话 也没有例子
 楼主| 电星电器 发表于 2011-11-18 17:15 | 显示全部楼层
问题已经解决谢谢版主  今天搞了一天才搞好 分享下把 免得以后也会有人不知道
打开"stm8s.h"   查找  GPIO_struct

原来定义:

typedef struct GPIO_struct
{
  vu8 ODR; /*!< Output Data Register */
  vu8 IDR; /*!< Input Data Register */
  vu8 DDR; /*!< Data Direction Register */
  vu8 CR1; /*!< Configuration Register 1 */
  vu8 CR2; /*!< Configuration Register 2 */
}
GPIO_TypeDef;
改进后:


typedef struct GPIO_struct
{
union OUTDATAREG
{
    vu8   all;
    struct outdatareg
    {
   vu8 B0:1;
   vu8 B1:1;
   vu8 B2:1;
   vu8 B3:1;
   vu8 B4:1;
   vu8 B5:1;
   vu8 B6:1;
   vu8 B7:1;
  }Bit;
}ODR,IDR;
   vu8 DDR; /*!< Data Direction Register */
  vu8 CR1; /*!< Configuration Register 1 */
  vu8 CR2; /*!< Configuration Register 2 */
}
GPIO_TypeDef;
GPIOB->ODR.all=0;//整个端口操作
       
//输出位操作,前提是该端口已经定义为输出
        GPIOB->ODR.Bit.B7=1;//PB7置高
        GPIOB->ODR.Bit.B7=0;//PB7置低
       
        GPIOB->ODR.Bit.B6=1;//PB6置高
        GPIOB->ODR.Bit.B6=0;//PB6置低
       
       
//输入位操作,前提是该端口已经定义为输入
        if(GPIOB->IDR.Bit.B1 == 1)
        {//端口输入高电平,运行下代码
               
        }
               
        if(GPIOB->IDR.Bit.B0 == 0)
        {//端口输入低电平,运行下代码
        }
香水城 发表于 2011-11-18 18:18 | 显示全部楼层
也学是我说的不够详细把 我上述的是一个判断,如果像我上面那么写的话就会影响到整个寄存起啊 现在就是想找到来写位指令的操作方法,香版主和各位大哥可以解决下吗 资料说的太少了 我在网上也没有找到相关的资料, ...
电星电器 发表于 2011-11-18 16:06


你要仔细点,我在3楼的写法是一个赋值语句,与你的判断语句不一样。
 楼主| 电星电器 发表于 2011-11-18 19:02 | 显示全部楼层
[quote][/quote]
我肯定知道啊 我的主要是问怎么写位指令啊  不过问题已经解决
604604 发表于 2011-11-25 21:49 | 显示全部楼层
网上相关的资料挺多的。
白开水key 发表于 2015-6-1 17:37 | 显示全部楼层
very good
zh113214 发表于 2015-6-1 23:13 | 显示全部楼层
不错不错。学习了。。。
aaa1125456 发表于 2015-6-2 10:31 | 显示全部楼层
谢谢了,学习了    找结构体 找成员就可以用了  刚开始学习stm8  好多不懂啊  GPIOD-> 找到成员了   
desertsailor 发表于 2015-6-2 19:31 | 显示全部楼层
先读后写就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

134

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部