初学,有很多的问题不懂,希望能够得到大家的指点,传道授业解惑。非常感谢!
以下是我写的一个控制一个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 被保护
} |