打印
[STM8]

端口设置问题

[复制链接]
2301|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 | 只看该作者
也学是我说的不够详细把 我上述的是一个判断,如果像我上面那么写的话就会影响到整个寄存起啊 现在就是想找到来写位指令的操作方法,香版主和各位大哥可以解决下吗 资料说的太少了 我在网上也没有找到相关的资料,

使用特权

评论回复
5
电星电器|  楼主 | 2011-11-18 16:09 | 只看该作者
在一个完整的程序里面是少不了单独的位操作的,资料上只是说了可以用BSET来实现位操作可以是也没说明就是一句话 也没有例子

使用特权

评论回复
6
电星电器|  楼主 | 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)
        {//端口输入低电平,运行下代码
        }

使用特权

评论回复
7
香水城| | 2011-11-18 18:18 | 只看该作者
也学是我说的不够详细把 我上述的是一个判断,如果像我上面那么写的话就会影响到整个寄存起啊 现在就是想找到来写位指令的操作方法,香版主和各位大哥可以解决下吗 资料说的太少了 我在网上也没有找到相关的资料, ...
电星电器 发表于 2011-11-18 16:06


你要仔细点,我在3楼的写法是一个赋值语句,与你的判断语句不一样。

使用特权

评论回复
8
电星电器|  楼主 | 2011-11-18 19:02 | 只看该作者
[quote][/quote]
我肯定知道啊 我的主要是问怎么写位指令啊  不过问题已经解决

使用特权

评论回复
9
604604| | 2011-11-25 21:49 | 只看该作者
网上相关的资料挺多的。

使用特权

评论回复
10
白开水key| | 2015-6-1 17:37 | 只看该作者
very good

使用特权

评论回复
11
zh113214| | 2015-6-1 23:13 | 只看该作者
不错不错。学习了。。。

使用特权

评论回复
12
aaa1125456| | 2015-6-2 10:31 | 只看该作者
谢谢了,学习了    找结构体 找成员就可以用了  刚开始学习stm8  好多不懂啊  GPIOD-> 找到成员了   

使用特权

评论回复
13
desertsailor| | 2015-6-2 19:31 | 只看该作者
先读后写就行了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

134

帖子

1

粉丝