GPIOPinWrite函数问题

2019-03-24 14:14发布

代码如下   void
GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal)
{
    //
    // Check the arguments.
    //
    ASSERT(GPIOBaseValid(ulPort));     //
    // Write the pins.
    //
    HWREG(ulPort + (GPIO_O_DATA + (ucPins << 2))) = ucVal;
}  
#define HWREG(x)                                                             
        (*((volatile unsigned long *)(x)))   函数调用如下: GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_2,0xff);     不明白的地方: 为什么将第二个参数左移两位在和第一个参数相加?操作的是哪个寄存器? 计算后的地址在手册找不到说明。。。 谁能帮忙指点下。谢谢
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
holdonpower
1楼-- · 2019-03-24 21:11
< GPIODATA 偏移地址0x000。其中从0-0x3FF,都是用于GPIODATA设定的。GPIODATA内被写近了什么

取决于写入的数据和写入地址。地址是10位的,高八位用于过滤。和我们设置的数据位一一对应。地址的某一位为“1”,对应的数据位的值将可以被改写。可以把地址想象成筛子,“1”是数据可以通过的。例如:往偏移地址0x300写入数据。意味这GPIODATA最高两为的数据将被改写。往偏移地址0x3f0写入数据,GPIODATA的高六位将被改写。
Study_Stellaris
2楼-- · 2019-03-25 02:57
 精彩回答 2  元偷偷看……
holdonpower
3楼-- · 2019-03-25 06:42

搜索不到相关解释。大家直接就看懂了吗?
是我的思维僵化,还是初次接触arm导致!哈哈~!

一周热门 更多>

相关问题

    相关文章