打印
[Cortex-M0技术交流]

芯唐NANO130--GPIO端口数据输出写屏蔽寄存器(GPIOx_DMASK) 的问题

[复制链接]
2839|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
carshow|  楼主 | 2013-5-6 18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学,有很多的问题不懂,希望能够得到大家的指点,传道授业解惑。非常感谢!
以下是我写的一个控制一个LED灯的程序,我想把IO口的输出数据写屏蔽掉,使其没有作用,但实际效果不能够达到我的期望,我不知道是否我的使用方式有问题,请大家帮我看看吧,谢谢了!

int main(void)
{
        UNLOCKREG();       
        GPIOE->PMD = 0x00001000;
        GPIOE->DMASK =0x11111111;
        LOCKREG();
        while(1)
        {
                        long  int i,j;
                  GPIOE->DOUT=0X0000;
                        for(i=1000000;i>0;i--)
                        {};
                        GPIOE->DOUT=0X0040;
                        for(j=1000000;j>0;j--)
                        {};
        }
}
做了一个延时让led灯闪烁,如果写屏蔽寄存器屏蔽了,就不会更新GPIOE->DOUT寄存器的值了,就不会闪烁显示了,但是实际效果还是led灯会闪烁。但是我已经是把写屏蔽寄存器(GPIOx_DMASK)的写为1了,使其不能够像GPIOE->DOUT寄存器内写数据,按道理是不会闪烁的。应该是一直亮着的。请大家帮忙看下,是否使用正确,谢谢了!
{
DMASK寄存器的作用如下:
GPIO 端口[x] Pin [n] 数据输出写屏蔽
用于保护相应寄存器  GPIOx_DOUT  bit[n]。在设置  DMASK  bit[n] 为‟1‟,相应的
GPIOx_DOUT[n] bit 被保护。写信号被屏蔽时,不能向保护位写数据。
0 = 相应的 GPIOx_DOUT[n] bit 能被更新
1 = 相应的 GPIOx_DOUT[n] bit 被保护
}

相关帖子

沙发
as1390| | 2013-6-14 20:26 | 只看该作者
有无试过去掉那个lockreg()试过?

使用特权

评论回复
板凳
peng794| | 2013-7-17 11:24 | 只看该作者
你的逻辑有问题。

设置完DOUT之后,立即写DMASK。这样就可以了。

使用特权

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

本版积分规则

2

主题

3

帖子

0

粉丝